So nutzen Sie PHP zur Abwehr von Cross-Site-Request-Forgery-Angriffen (CSRF)
Mit der Entwicklung und Beliebtheit von Webanwendungen werden Netzwerksicherheitsprobleme immer wichtiger. Cross-Site-Request-Forgery-Angriffe (CSRF) sind zu einer der häufigsten Angriffsmethoden geworden. Bei einem CSRF-Angriff handelt es sich um einen Angreifer, der einige böswillige Vorgänge durchführt, indem er sich als Anfragen legitimer Benutzer ausgibt, beispielsweise Geld überweisen, Passwörter ändern usw., ohne dass der Benutzer sich dessen bewusst ist. Um Benutzer und Webanwendungen zu schützen, müssen Entwickler Maßnahmen ergreifen, um sich gegen solche Angriffe zu verteidigen. In diesem Artikel wird erläutert, wie Sie PHP zur Abwehr von CSRF-Angriffen verwenden.
Hier ist ein Beispielcode mit einem Token:
// 生成令牌 function generateToken() { $token = bin2hex(random_bytes(32)); $_SESSION['csrf_token'] = $token; return $token; } // 验证令牌 function verifyToken($token) { if(isset($_SESSION['csrf_token']) && $_SESSION['csrf_token'] === $token) { return true; } return false; } // 在表单中添加令牌字段 function addTokenField() { $token = generateToken(); echo '<input type="hidden" name="csrf_token" value="'.$token.'">'; }
Beispielcode zur Überprüfung des Referer-Headers:
function verifyReferer() { if(isset($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']) !== false) { return true; } return false; }
Beispielcode zur Überprüfung des Origin-Headers:
function verifyOrigin() { if(isset($_SERVER['HTTP_ORIGIN']) && $_SERVER['HTTP_ORIGIN'] === 'https://www.example.com') { return true; } return false; }
Beispielcode zum Festlegen von Cookie-Eigenschaften:
session_set_cookie_params([ 'lifetime' => 86400, // Cookie的有效期为一天 'path' => '/', 'domain' => '.example.com', 'secure' => true, // 仅在HTTPS连接下传输 'httponly' => true // 仅通过HTTP协议访问 ]); session_start();
Während des Anmeldevorgangs können wir ein Anmeldetoken generieren und es serverseitig und in der Sitzung speichern. Bei jeder Anmeldeanfrage müssen wir die Gültigkeit des Tokens überprüfen, um sicherzustellen, dass das Token nur über den Anmeldevorgang erhalten werden kann.
Während des Abmeldevorgangs müssen wir die mit dem Benutzer verbundenen Sitzungsdaten zerstören und die Sitzungs-ID löschen. Dadurch wird verhindert, dass Angreifer Sitzungs-IDs stehlen, um sich als Benutzer auszugeben.
Zusammenfassung:
CSRF-Angriffe sind ein häufiges Netzwerksicherheitsproblem, aber wir können einige Maßnahmen ergreifen, um uns gegen diesen Angriff zu verteidigen. In diesem Artikel werden einige Methoden zur Verwendung von PHP zur Abwehr von CSRF-Angriffen vorgestellt, darunter das Generieren und Überprüfen von Token, das Überprüfen von Anforderungsquellen, das Festlegen von Cookie-Attributen und die Beachtung der Anmelde- und Abmeldesicherheit. Durch den kombinierten Einsatz dieser Methoden können wir die Sicherheit von Webanwendungen und Benutzern wirksam schützen.
Das obige ist der detaillierte Inhalt vonWie PHP sich gegen CSRF-Angriffe verteidigt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!