Heim >Backend-Entwicklung >PHP-Tutorial >Wie schützt man PHP-Funktionen vor CSRF-Angriffen?
Zusammenfassung: CSRF-Angriffe in PHP-Funktionen können durch die Verwendung von Token abgewehrt werden: Generieren Sie ein eindeutiges Token und speichern Sie es in der Sitzung oder im Cookie. Fügen Sie das Token als ausgeblendetes Feld in das geschützte Formular ein. Stellen Sie bei der Verarbeitung der Formularübermittlung sicher, dass das Token mit dem gespeicherten Token übereinstimmt. Wenn keine Übereinstimmung vorliegt, wird die Anfrage abgelehnt.
So schützen Sie sich vor CSRF-Angriffen in PHP-Funktionen
Cross-Site Request Forgery (CSRF) ist eine bösartige Technik, die es einem Angreifer ermöglicht, gefälschte Anfragen über den Browser eines Opfers zu senden. Bei PHP-Anwendungen könnte dies einem Angreifer ermöglichen, mithilfe bestimmter Funktionen nicht autorisierte Vorgänge durchzuführen.
Praktischer Fall:
Angenommen, Sie haben eine PHP-Anwendung, die eine Funktion change_password
enthält, mit der Benutzer ihr Passwort ändern können. Diese Funktion verwendet den folgenden Code: change_password
。该函数使用以下代码:
<?php if (isset($_POST['password'])) { $password = $_POST['password']; // 更新数据库中的密码... } ?>
此代码容易受到 CSRF 攻击,因为攻击者可以向受害者的浏览器发送一个 POST 请求,其中包含他们希望用于受害者密码的 password
<?php session_start(); // 生成令牌并将其存储在会话中 $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); ?>Dieser Code ist anfällig für CSRF-Angriffe, da ein Angreifer eine POST-Anfrage an den Browser des Opfers senden kann, die den Parameter
password
enthält, den er für das Passwort des Opfers verwenden möchte. Dieser Angriff kann durch gefälschte E-Mails, bösartige Websites oder andere Methoden erfolgen. Abwehrmaßnahmen:
Zur Abwehr von CSRF-Angriffen muss ein Mechanismus implementiert werden, der die Authentizität der Anfrage überprüft. Eine gängige Methode ist die Verwendung von Token.<form action="change_password.php" method="post"> <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>" /> <!-- 其他表单字段 --> </form>
<?php if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) { // 令牌验证失败,拒绝请求 exit('Invalid request'); } ?>
rrreee
Durch die Implementierung dieser Abwehrmaßnahmen können Sie das Risiko von CSRF-Angriffen auf Ihre PHP-Anwendungen reduzieren. 🎜Das obige ist der detaillierte Inhalt vonWie schützt man PHP-Funktionen vor CSRF-Angriffen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!