3

Ajax (jQuery) と POST メソッドを使用して、データベース内のデータを更新します。私は次のことを行います:

  • フォームからデータを取得: user_id、entry_id、content、...
  • データを処理する URL に送信します。
  • データが有効であれば、データベースに記録します。

ユーザーが他の場所からではなく、私の Web サイトからデータを送信していることを確認する方法がわかりません。この問題を解決するのを手伝ってください。ありがとう !

4

2 に答える 2

5

CSRF攻撃から防御しようとしています。

標準的な防御策は、別の AJAX 要求から取得される POST でトークンを要求することです。ブラウザのクロスドメイン防御により、ドメイン外の Javascript はトークンを取得できません。

于 2009-12-20T15:39:53.310 に答える
1

ここにはいくつかの問題があります。

  1. 操作を行っているユーザーの認証と認可
  2. CSRF に対する保護。

どちらを行う必要があるかを決定します。最初のものは、Cookie、HTTP 認証 (ブラウザーが AJAX 要求に対しても送信する)、またはカスタム メソッド (認証を含む追加パラメーターなど) によって処理できる必要があります。

CSRF は別の問題ですが、通常のフォーム投稿ではなく、AJAX 経由でリクエストが実際に送信されたことを確認することで、これを簡単に回避できます。これは、誰かが HTTP フォームを作成して追加できない余分なヘッダーを追加することで達成できるはずです (注意: Javascript ですべてのヘッダーを追加できるわけではありません。X-Header を使用してみてください)。

もう 1 つの可能性は、そもそもフォーム エンコードされた投稿を使用しないことです。ブラウザは通常、HTTP POST 経由で送信しないため、本文に JSON オブジェクトが含まれていると予想される場合は、別のサイトから取得することはできません。

于 2009-12-20T15:46:57.763 に答える