POST メソッド、Ajax、セキュリティ?
質問
Ajax (jQuery) と POST メソッドを使用してデータベース内のデータを更新します。私は次のことを行います。
- フォームからデータを取得します。user_id、entry_id、コンテンツ、...
- データを処理する URL に送信します。
- データが有効な場合は、データベースに記録されます。
ユーザーが他の場所からではなく、私の Web サイトからデータを送信していることを確認する方法がわかりません。この問題の解決を手伝ってください。ありがとう !
解決
あなたは CSRF の攻撃を防御しようとしている。
標準的な防御は、異なるAJAX要求から取得されるPOSTにトークンを要求することです。そのため、ブラウザのクロスドメインの防御、あなたのドメインの外にあるJavascriptがトークンを取得することはできません。
他のヒント
ここにはいくつかの問題があります。
- 操作を行うユーザーの認証と認可
- CSRF に対する保護。
どれを行う必要があるかを決めてください。1 つ目は、Cookie、HTTP 認証 (ブラウザが AJAX リクエストに対しても送信する)、または何らかのカスタム メソッド (例:認証を含む追加パラメータ)
CSRF は別の問題ですが、リクエストが通常のフォームポスト経由ではなく、実際に AJAX 経由で受信されたことを確認することで、非常に簡単に回避できます。これは、HTTP フォームを作成して追加できない追加のヘッダーを追加することで実現できるはずです (注意:すべてのヘッダーを Javascript で追加できるわけではありません。X-Header を使用してみてください。
もう 1 つの可能性は、そもそもフォームでエンコードされた投稿を使用しないことです。本文に JSON オブジェクトが含まれると予想される場合、ブラウザは通常、HTTP POST 経由で JSON オブジェクトを送信しないため、別のサイトから取得することはできません。
所属していません StackOverflow