Heim > Backend-Entwicklung > PHP-Tutorial > Wie implementiert man CSRF-Tokens sicher in PHP?

Wie implementiert man CSRF-Tokens sicher in PHP?

Patricia Arquette
Freigeben: 2024-12-08 00:39:12
Original
328 Leute haben es durchsucht

How to Securely Implement CSRF Tokens in PHP?

So implementieren Sie CSRF-Tokens in PHP: Eine umfassende Anleitung

Verwendung zufälliger Bytes für die Generierung starker Token

Im Im Kontext der CSRF-Token-Generierung birgt die Verwendung von rand() und uniqid() aufgrund ihrer Vorhersehbarkeit und begrenzten Entropie Sicherheitsrisiken. Entscheiden Sie sich stattdessen für:

session_start();
if (empty($_SESSION['token'])) {
    $_SESSION['token'] = bin2hex(random_bytes(32));
}
$token = $_SESSION['token'];
Nach dem Login kopieren

CSRF-Tokens sicher überprüfen

Vermeiden Sie die Verwendung direkter Gleichheitsprüfungen (== oder ===). Verwenden Sie stattdessen hash_equals() für PHP 5.6 oder paragonie/hash-compat für frühere Versionen:

if (!empty($_POST['token'])) {
    if (hash_equals($_SESSION['token'], $_POST['token'])) {
         // Proceed to form data processing
    } else {
         // Log and monitor these attempts
    }
}
Nach dem Login kopieren

Erhöhung der Sicherheit mit Per-Form-Tokens

Um Tokens einzuschränken auf bestimmte Formen verwenden hash_hmac():

echo hash_hmac('sha256', '/my_form.php', $_SESSION['second_token']);
Nach dem Login kopieren
$calc = hash_hmac('sha256', '/my_form.php', $_SESSION['second_token']);
if (hash_equals($calc, $_POST['token'])) {
    // Continue...
}
Nach dem Login kopieren

Hybrider Ansatz für Einfachheit

Mit Twig-Templating können Sie die Token-Generierung mithilfe einer benutzerdefinierten Twig-Funktion vereinfachen:

$twigEnv->addFunction(
    new \Twig_SimpleFunction(
        'form_token',
        function($lock_to = null) { // ... }
    )
);
Nach dem Login kopieren
<input type="hidden" name="token" value="{{ form_token() }}" />
Nach dem Login kopieren

Oder für gesperrt Tokens:

<input type="hidden" name="token" value="{{ form_token('/my_form.php') }}" />
Nach dem Login kopieren

Einweg-CSRF-Tokens

Erwägen Sie bei Bedarf die Verwendung einer speziellen Bibliothek zur Verwaltung von Einmal-CSRF-Tokens, z. B. Anti-CSRF Bibliothek von Paragon Initiative Enterprises.

Das obige ist der detaillierte Inhalt vonWie implementiert man CSRF-Tokens sicher in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage