-2

数ヶ月前、私は iOS(iphone) アプリケーションに取り組みました。これにより、ユーザーはいくつかの種類のイベントを作成し、それらを XML/JSON ファイルとして Web サーバーに投稿することができました。その後、デバイスを介して、さまざまなユーザーからのイベントなどを表示できました。

全体を構築するというアイデアは、かなり基本的なものでした。アプリケーションが初めて起動されたとき、アプリケーションは URL に接続し、ユーザー ID (ユーザーごとに一意) を要求しました。次に、ユーザーが何かを投稿するたびに、HTTP 基本認証を使用して、ヘッダーとしてユーザー ID と、作成されたイベントに関するすべての情報を含む XML ファイルを送信しました。私はサーバー側で働いたことがないので、システム全体がどれほど安全かはわかりませんでした。

数日前、私は同じアイデアである私のアプリケーションの作業を開始したので、最初にサーバー側(php)で作業を開始しました。始める前に、私の以前のプロジェクトがどれほど安全であるかを確認したかったのですが、いかなる種類のセキュリティもなかったことにショックを受けました。簡単な Web デバッガー (スニファー) を使用するだけで、アプリケーションが接続してユーザー ID を要求する場所、データベースに送信されたすべての xml ファイルの形式、およびサーバーがどのように応答したかを確認できました。

したがって、誰かが 100 万のユーザー ID または 100 万のイベントでデータベースをあふれさせたい場合、それを行うための php スクリプトを作成するのは非常に簡単です。この場合、HTTP 基本認証を使用しました。

私の質問は、どの種類の認証を使用する必要があるかということです。そのため、サーバーとユーザーの間でどのような種類のファイルが交換されるか (XML) がわかりません。簡単なスクリプトで。

超安全なアプリケーションを構築したくはありませんが、少なくとも基本的な種類のセキュリティを備えたアプリケーションを構築したいと考えています。私は php に非常に慣れていないので、使用する必要があるセキュリティメカニズムを確認するためのリンクや、さらに良いチュートリアルを提供してください。また、以前にこのようなものを開発した場合、どのような種類のセキュリティを使用し、何を提案しますか?

4

2 に答える 2

4

「どの種類の認証を使用する必要があるので、サーバーとユーザーの間でどのような種類のファイルが交換されているかはわかりません (XML)」

これに対する唯一の「本当の」答えは、ssl証明書をインストールしてからhttpsプロトコルを使用することです

于 2013-01-20T20:47:56.807 に答える
1

単純なWebデバッガー(スニファー)を使用するだけで、アプリケーションが接続してユーザーIDを要求する場所、データベースに送信されるすべてのxmlファイルの形式、およびサーバーがどのように応答するかを確認できました。

SSLを使用して、man-in-the-middle攻撃を防ぎます。

したがって、誰かが100万のユーザーIDまたは100万のイベントでデータベースを氾濫させたいだけの場合、それを行うためのphpスクリプトを作成するのは非常に簡単です。

それがネットワーク通信の性質です。ヒューリスティックを使用して、不要なデータの量を制限します。いくつかの例:

  1. 1つのuser_idは、1秒あたり最大1つのイベントを作成できます。
  2. クライアントにuser_idの要求に署名させ、サーバー上の署名を確認します。

これらは悪用を防ぐ確実な方法ではありませんが、完全なセキュリティはありません。ただし、提案された方法では、ほとんどのスクリプトキディを排除できます。

于 2013-01-20T21:02:08.800 に答える