0

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 トークンを取得できます!? 間違っている場合は修正してください。

4

0 に答える 0