2008-09-01 7 views
19

私はjquery ajaxを使用して私のサーバにアップデートをポストバックしています。私はAJAXコールだけがデータを投稿できるように適切な措置を講じていることを確認することに懸念しています。jquery ajaxのデータ投稿のセキュリティに関するアドバイスはありますか?

私のスタックは、MySQLバックエンドに対してApache上のPHPです。

アドバイスをいただければ幸いです!

答えて

27

ページ内のAJAXコールが行うことができるリクエストは、アプリケーション外の人が行うこともできます。正しいとすれば、あなたのウェブアプリケーションからのAJAXコールの一部として、または手/他の手段によって作られたものかどうかを知ることはできません。

あなたのAJAXコールだけがデータを投稿できるようにしたいと言っているときには、次の2つのシナリオが考えられます。悪意のあるユーザーがデータを投稿できないようにする別のユーザーのデータを妨害するか、実際には投稿を複数リクエスト操作の「フロー」に制限する必要があります。

最初のケース(別のユーザーに/から別のユーザーに悪質なデータを投稿した場合)に関心がある場合は、AJAXを使用しているかどうかにかかわらず、ソリューションは同じです。必要な手段でユーザーを認証するだけです。通常セッションクッキーを介して

2番目のケースに懸念がある場合、プロセスの各ステップで一意のトークンを発行し、サーバー側に期待されるトークンを保存するような何かをする必要があります。次に、リクエストが行われたときに、実行中のアクションと予想されるトークンが一致し、そのトークンがまだ使用されていないことを示すサーバー側の対応するエントリがあることを確認します。存在しない場合は、要求を拒否します。存在する場合は、そのトークンを使用済みとしてマークし、要求を処理します。

これらの2つのシナリオのいずれか以外のものが懸念される場合、その回答は、提供したものよりも詳細に依存します。

+2

セッションクッキー認証の問題は、CSRF攻撃を防止するだけでは不十分であることです。 ajaxを使用しているかどうかにかかわらず、いくつかのセキュリティ層を追加することをお勧めします。 http://en.wikipedia.org/wiki/Csrf –

+0

@JesseHallett、こんにちは、セキュリティレイヤーとしてSpring Securiyを使用しています。クライアント側からAJAX投稿要求を作成しています。私はCSRFトークンを有効にしているので、AJAXポストリクエスト中に渡す各リクエストでサーバクライアントトークンが共有されています。私の手続きは十分安全ですか? –

5

セッションを使用して、Ajax投稿が認証されたコンテキストで確実に実行されるようにします。 Ajaxコードをサーバーの別のクライアントと考えると、認証の問題をそのように扱うことが容易になります。

関連する問題