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