2017-09-19 5 views
1

セキュリティ(CSRF)を強化するためにフォームにトークンを追加しようとしています。私が(stackoverflowの上、および他の多くのサイト)これまでに発見したすべてが使用することを推奨です:フォームセキュリティトークン(CSRF) - bin2hexでbin2hexを使用する理由(random_bytes(32))

$_SESSION['token'] = bin2hex(random_bytes(32)); 

私の質問は簡単です、なぜ単に使用しない:

$_SESSION['token'] = random_bytes(32); 

なぜこれを変換します16進表現に変換するか?

+2

どのようにフォーム/ URLに生のバイトを印刷しますか? –

答えて

3

ランダムバイトが簡単にフォームのフィールドにトークンとして渡されることはありません、ありがとうございました。予測可能な文字セットが必要です。バイトのランダムな流れは、フォームが使用するクライアントエンコーディング(utf-8、iso-8859-1、win1252、big5など)を壊すことがほぼ確実です。

一方、bin2hexでエンコードされた文字は常に純粋なASCII文字列なので、クライアント上のどのエンコードでも安全です。

関連する問題