jQuery/ajax を使用してページが読み込まれる PHP アプリケーションがあります。私の問題は、リクエストごとに ANTI CSRF Tokenを含める必要があることです。
別の言い方をすれば、最初のリクエストを行うとき、次のリクエストのためにトークンを更新する必要があります。問題は次のとおりです。フォームの非表示フィールドに新しいトークンを設定するにはどうすればよいですか?
トークンの共通の非表示フィールドを保持し、その値を変更することを考えました。しかし、問題は次のとおりです。新しいトークンを設定するにはどうすればよいですか?
ajaxではできません。ユーザー自体が危険にさらされている場合、トークンは失敗します。
サンプルコードはこちら
$key=md5(rand(1,9999).md5(date("Ymdhisu")).rand(1,9999));
$token=md5(getIpAddress().rand(1,9999).CM_SALT_CSRF);
$hash_key=$key.$token;
$hash_key=hash('sha512', $hash_key);
$session_key=$hash_key;
$_SESSION['CSRF_TOKEN']=$session_key;
$_SESSION['KEY']=$key;
次に、隠しフィールドに $token を設定します。
TOKEN でリクエストを送信した後、処理後に新しい CSRF トークンを生成して設定します。2.0以降、新しいトークン値を非表示フィールドに設定するにはどうすればよいですか?
いくつかのページと JavaScript をリクエストして新しいトークンを設定すると、CURL を介して行うこともできますよね?.
私が明確であることを願っています???
編集1
私のシナリオは、ユーザー自体がハッカーで、偽の電子メール ID を使用して偽のアカウントを作成した場合です。次に、別のタブで私のサイトにログインしている間に、リファラーやその他のヘッダーフィールドを私のサイトに偽造することにより、localhost からの curl リクエストを使用できます。ユーザーは、curl レスポンスから csrf トークンを取得できます!? 間違っている場合は修正してください。