質問

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

  • フォームからデータを取得します。user_id、entry_id、コンテンツ、...
  • データを処理する URL に送信します。
  • データが有効な場合は、データベースに記録されます。

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

役に立ちましたか?

解決

あなたは CSRF の攻撃を防御しようとしている。

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

他のヒント

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

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

どれを行う必要があるかを決めてください。1 つ目は、Cookie、HTTP 認証 (ブラウザが AJAX リクエストに対しても送信する)、または何らかのカスタム メソッド (例:認証を含む追加パラメータ)

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top