私は現在、これらの2つの機能、トークン生成するための1と妥当性をチェックするための1持っている:セキュリティ保護されたフォームと同じページにCSRFトークンを生成するのは安全ですか?
function getToken() {
if(isset($_SESSION['token'])) {
return $_SESSION['token'];
} else {
$token = //random key generator goes here;
$_SESSION['token'] = $token;
return $token;
}
}
function validateToken($token) {
if ($token == getToken()){
return true;
} else {
return false;
}
}
をそして、私の登録フォームは、この隠された入力を含む:
<input type="hidden" name="token" value="<?php echo getToken(); ?>">
は、この安全ですか?正当なユーザーのセッションが期限切れになり、CSRFがこの登録フォームに登録され、悪意のあるサイト/ iframe自体によってトークンが生成される場合、セッションにまだ存在していないので、それでうまくいくので、私は尋ねています。
クッキーのためにユーザーがログインしていると仮定します。
ここで間違って理解していますか? iframeのようなリモートリンクはバックエンドでセッションを生成できませんか?
...セッションはこれよりも安全性が低いのはなぜですか? – Machavity
@Machavity申し訳ありませんが、あなたが何を言おうとしているのか理解できません。私は、私のアプローチが安全であるかどうかを尋ねるのは、フォームとちょうど同じページにトークンを生成することが目的を敗北させると想像しているからです。 –
"フォームと同じページにトークンを生成する" ---どういう意味ですか? CSRFトークンを推測することは不可能でなければなりません。これが唯一の要件です。 – zerkms