あなたのアプリとあなたのウェブサイトの間のコミュニケーションの最良の方法?PHP、Webサービスなど


8

自分のウェブサイトと通信したいアプリケーションを作成しています。アプリは、ウェブサイトのデータベースから特定のアプリユーザーのデータを取得する必要があります。これを行うための最良の方法は不明です。

たとえば、これを行う1つの方法は、アプリにログインページを作成し、それが私のウェブサイトのlogin.phpロジックにヒットすることです。1つのコードベースを使用して、Webサイトとアプリの両方のサインインを処理できるため、これは便利です。

私が見た別のソリューションは、JSONリクエストを使用してアプリとWebサイト間の通信を処理することです。JSONオブジェクトは作成と解析が簡単なので、これは便利です。

私は基本的に、このコミュニケーションを実現するための最良の/一般的な方法、お互いを重ねることの長所と短所、および考慮すべきその他のセキュリティ問題を知りたいです。

たとえば、一方の方法をもう一方の方法で使用する場合、機密のユーザーデータを公開するリスクはありますか?もしそうなら、これをどのように防ぐことができますか?暗号化とユーザー検証は、どこでどのように機能しますか?


一般的な方法は、APIを作成することです。Googleや他の大企業によるAPIの例を参照して、それらがどのように行われるかを理解してください。
Arseni Mourzenko 2012

単一の「ベスト」、「ワンサイズフィット」メソッドはありません。あなたが見てきたオプションを私たちに伝えるのではなく、あなたのアプリの特定のニーズを私たちにもっとよく定義してください。あなたがそれに集中するとき、あなたはあなたの決断を行うのがはるかに簡単になると私は思う。
GrandmasterB

最も基本的なレベルでは、モバイルアプリがWebサイトデータベースから情報を取得する方法が必要です。ユーザーは、さまざまな種類のトランザクションなど、さまざまなビットのデータを取得します。過去1か月間にユーザーが行ったすべてのトランザクションをアプリでユーザーに表示したい。そのためにデータベースでクエリを実行する必要があります。この基本的な機能のコードベースを1つ維持できるため、すでにPHPに傾いています。しかし、これを行うより良い、より安全な方法はありますか?私が見落としている明らかな落とし穴/危険はありますか?
edc598

2
@ edc598:質問にコメントを追加しないでください。質問を明確にするために、質問を完全で一貫性のあるものに更新することをお勧めします。
S.Lott

回答:


6

アプリケーションとWebサイトにREST APIを構築することをお勧めします。

Webサービスの作成はより手間がかかりますが、かなりクリーンだと思います。このようにすると、データベースに接続してクエリする方法をWebサイトやアプリケーションで心配する必要はありません。これらの詳細はすべてAPIによって抽象化されるためです。また、もう1つの利点はセキュリティです。Webサイトがハッキングされた場合、WebサイトはAPI呼び出しのみを実行しているため(データベース呼び出しではないため)、データベースにアクセスできるとは限りません。もちろん、考慮すべき多くの点があります。セキュリティ、しかしそれはあなたが心配しなければならないもう一つの事です。

PHPでREST APIを作成する方法に関する優れたスターターガイドを次に示します。

http://www.gen-x-design.com/archives/create-a-rest-api-with-php/


役立つリンクが含まれているため、この回答が一番気に入りました。誰もが答えを出していても、この主題についてはかなりの洞察があります。ありがとう!
edc598 2012

リンクが死んでいる...
cozyconemotel

1

要件の複雑さに応じて、REST / JSONまたはSOAP Webサービスのいずれか。

単純な要件の場合、特にXMLよりもJSONを優先する場合、RESTは理解と実装が簡単です。

ただし、要件に認証、メッセージ検証、発見、否認防止、または複雑なメッセージスキーマが含まれている場合は、ほぼすべての問題がカバーされているため、SOAPの複雑さを詳しく調べる方がよい場合があります。SOAPはより複雑で理解が困難ですが、メッセージングシステムで発生する可能性のあるほぼすべてのアーキテクチャの順列とバリエーションを処理します。さらに、APIの迷路を乗り越えるのに役立つ非常に成熟した包括的なツールセットを備えています。ただし、このレベルの高度化が必要ない場合は、RESTを使用してください。


0

APIの最大の欠点は、JSONリクエストを作成し、回答を変換し、それらをページに表示する責任をブラウザーに負わせることです。本質的に、またはユーザーがjava-scriptをオフにしているため、すべてのブラウザーがこれに対応しているとは限りません。

しかし、これらの懸念は時間とともに減少してきており、現在は比較的少数のクライアントにしか影響を与えていません。ただし、すべてのクライアントをサポートするには、追加の作業を行う価値があるかもしれません。

APIの利点は、APIロジックを表示の詳細から分離することがはるかに簡単であり、ブラウザ以外の方法(別のアプリケーションなど)でAPIに直接アクセスすることが簡単であることです。これにより、APIのテストとクライアントのテストが自動的に分離されます。これは良いことです。

また、JSONを適切に解析してエスケープするのは、HTMLドキュメント(java-scriptを含むスクリプトタグを含めることができる)の場合よりも簡単なので、ページインジェクション攻撃(クロスサイトスクリプティング攻撃など)に対してもより安全です。これは、クライアントでJSONパーサーを使用してJSONを解析し、まったく安全でない何らかの形式のeval()を使用しないことを前提としています。

もう1つの可能な利点は、「Webフレームワーク」レイヤーをほぼすべて排除できることです。ASP、JSP、Django、Zendなどの代わりに、JSONをクライアントからサーバーに送受信するための薄いレイヤーが必要です。したがって、必要に応じて、フレームワーク間で簡単に移植できるようにすることもできます。これにより、アプリケーションから1つの大きな可動部分を排除できます。

暗号化と検証は基本的にどちらの方法でも同じように機能すると思います。APIを使用している場合、攻撃者はブラウザをクライアントとして使用する必要はなく、ヘッダーを送信できることを忘れてしまう可能性があるため、Webページを使用している場合よりも、クライアントを信頼しないことを覚えている可能性が高いと思います。 、クエリパラメータ、必要な投稿データ。これは技術的な問題というよりは心理的な問題であり、あなたには当てはまらないかもしれません。


1
非常によく考えられた答えをありがとうございます。私は自分のアプリをサポートしたいと思っています。ユーザーデータに対して異なるクエリを実行するPHPで異なるメソッドを作成することは良い考えだと思いました。このアイデアについてどう思いますか?PHPスクリプトとアプリ間の通信を保護するにはどうすればよいですか?httpsを使用できますか?見落としていることはありますか?このデータを照会するより簡単な方法でしょうか?
edc598 2012

1つのことを除いて私が言ったことはすべて、自分のアプリをサポートすることだけに当てはまります。HTTPSは別の質問ですが、通信を保護するのに役立ちますが、クライアント自身からのクロスサイトスクリプティングや攻撃を防ぐことはできません。私は最後の2つの質問が何であるかを本当に知りません。
psr
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.