これはCSRFトークンの生成に関する質問です。CSRFトークンの生成
通常、ユーザーのセッションに関連付けられた一意のデータに基づいてトークンを生成し、秘密鍵でハッシュして塩漬けします。
私の質問は、使用する一意のユーザーデータがない場合にトークンを生成することです。セッションは利用できません。クッキーはオプションではありません.IPアドレスなどは信頼できません。
リクエストの一部としてハッシュ文字列を含めることができない理由はありますか?トークン
var $stringToHash = request.get('key')
var $isValidToken = hash($stringToHash + $mySecrtKey) == request.get('csrfToken')
ハッシュに使用されている文字列が要求ごとに異なるであろうCSRFの
var $stringToHash = random()
var $csrfToken = hash($stringToHash + $mySecretKey)
<a href="http://foo.com?csrfToken={$csrfToken}&key={$stringToHash}">click me</a>
例サーバー側の検証:トークンを生成し、それを埋め込む 例の擬似コード。各要求に含まれていれば、CSRFトークンの検証を進めることができます。各リクエストで新規であり、ページに埋め込まれているだけなので、トークンへの外部アクセスは利用できません。次に、トークンのセキュリティは、私にのみ知られている$ mySecretKeyに落ちます。
これは簡単なアプローチですか?私はこれがうまくいかない理由を見逃していますか?
おかげ
を読んでお勧めします。同じトークンとキーの組み合わせが無期限に機能します。 – Matthew