2017-09-19 1 views
1

Ich versuche, ein Token zu meinem Formular hinzuzufügen, um die Sicherheit (d. H. CSRF) zu verstärken. Alles, was ich bisher gefunden habe (auf Stackoverflow, und vielen anderen Seiten) ist die Empfehlung zu verwenden:Formular Sicherheitstoken (CSRF) - warum bin2hex in bin2hex (random_bytes (32)) verwenden

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

Meine Frage gerade nach vorne ist, warum nicht einfach verwenden:

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

warum diese konvertieren in eine hexadezimale Darstellung?

Danke

+2

Wie werden Sie rohe Bytes in den Forms/URLs dann drucken? –

Antwort

3

Zufall Bytes wird nicht leicht als Token im Feld des Formulars übergeben werden. Sie brauchen vorhersehbare Zeichen. Nur ein zufälliger Fluss von Bytes ist fast sicher, jegliche Client-Codierung (utf-8, iso-8859-1, win1252, big5, etc.) zu brechen, die das Formular verwendet.

Auf der anderen Seite, bin2hex codierte Zeichen werden immer reine ASCII-Zeichenfolge, daher sind sie sicher in jeder Codierung auf dem Client.

Verwandte Themen