Heim > Artikel > Backend-Entwicklung > Best Practices für die PHP-Programmierung zur Verhinderung von CSRF-Angriffen
„Best Practices für die PHP-Programmierung zur Verhinderung von CSRF-Angriffen“ Um Benutzer und Anwendungen zu schützen, müssen Entwickler einige Maßnahmen ergreifen, um CSRF-Angriffe zu verhindern. In diesem Artikel werden einige Best Practices der PHP-Programmierung zur Verhinderung von CSRF-Angriffen vorgestellt und einige Codebeispiele bereitgestellt.
Verwenden Sie CSRF-Tokens
Die Verwendung von CSRF-Tokens ist eine der gebräuchlichsten und effektivsten Möglichkeiten, CSRF-Angriffe zu verhindern. Pro Benutzersitzung wird ein eindeutiges Token generiert und jeder Formularübermittlungsanforderung beigefügt. Wenn der Server die Anfrage verarbeitet, prüft er, ob das Token gültig ist. Wenn das Token ungültig ist, kann der Server die Anfrage ablehnen oder andere benutzerdefinierte Aktionen ausführen.// 生成CSRF令牌 function generateCSRFToken() { $token = bin2hex(random_bytes(32)); $_SESSION['csrf_token'] = $token; return $token; } // 在表单中包含CSRF令牌 function renderForm() { $csrfToken = generateCSRFToken(); echo '<form action="process.php" method="post">'; echo '<input type="hidden" name="csrf_token" value="' . $csrfToken . '">'; echo '<input type="text" name="username">'; echo '<input type="password" name="password">'; echo '<input type="submit" value="Submit">'; echo '</form>'; } // 处理表单提交请求 function processForm() { if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) { // 令牌无效,处理错误 echo 'Invalid CSRF token!'; return; } // 处理表单提交数据 $username = $_POST['username']; $password = $_POST['password']; // 执行其他操作 // ... } // 调用函数 renderForm(); processForm();
generateCSRFToken
für die Generierung des CSRF-Tokens und dessen Speicherung in der Sitzung des Benutzers verantwortlich. Die Funktion renderForm
ist für das Rendern des Formulars und das Einfügen des CSRF-Tokens in die ausgeblendeten Felder verantwortlich. Die Funktion processForm
ist für die Verarbeitung von Formularübermittlungsanfragen und die Überprüfung der Gültigkeit des CSRF-Tokens vor der Verarbeitung verantwortlich.
Zusätzlich zur Verwendung von CSRF-Tokens können Sie CSRF-Angriffe auch verhindern, indem Sie die Quelle der Anfrage überprüfen. Bei der Verarbeitung einer Anfrage kann der Server das Feld Referer
im Anfrageheader überprüfen, um sicherzustellen, dass die Anfrage von demselben Domänennamen stammt. Wenn das Feld Referer
leer ist oder nicht der erwartete Domänenname ist, kann der Server die Anfrage ablehnen oder andere benutzerdefinierte Aktionen ausführen. generateCSRFToken
函数负责生成CSRF令牌,并将其存储在用户的会话中。renderForm
函数负责渲染表单,并在隐藏的字段中包含CSRF令牌。processForm
函数负责处理表单提交请求,并在处理前验证CSRF令牌的有效性。
Referer
字段,确保请求是来自同一域名的。如果Referer
字段为空或不是期望的域名,服务器可以拒绝请求或执行其他自定义操作。以下是一个简单的验证请求来源的示例:
function processRequest() { $expectedDomain = 'https://www.example.com'; if (!isset($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'], $expectedDomain) !== 0) { // 请求来源无效,处理错误 echo 'Invalid request source!'; return; } // 处理请求 // ... }
在上述代码中,processRequest
函数负责处理请求,并验证请求来源。通过检查请求头中的Referer
Das Folgende ist ein einfaches Beispiel für die Überprüfung der Anforderungsquelle:
rrreee
processRequest
für die Verarbeitung der Anforderung und die Überprüfung der Anforderungsquelle verantwortlich. Der Server kann die Gültigkeit der Anfrage ermitteln, indem er prüft, ob das Feld Referer
im Anfrageheader mit dem erwarteten Domänennamen beginnt. Zusammenfassung🎜CSRF-Angriffe stellen eine gewisse Bedrohung für die Sicherheit von Webanwendungen dar, aber durch die Einführung geeigneter Programmierpraktiken können Entwickler solche Angriffe wirksam verhindern. Dieser Artikel behandelt zwei Best Practices in der PHP-Programmierung: die Verwendung von CSRF-Tokens und die Überprüfung der Herkunft von Anfragen. Diese Methoden können Entwicklern helfen, die Sicherheit von Webanwendungen zu verbessern und Benutzerdaten und Privatsphäre zu schützen. 🎜🎜Aber es sollte beachtet werden, dass der Verlass auf diese Maßnahmen allein CSRF-Angriffe möglicherweise nicht vollständig verhindern kann. Entwickler sollten auch andere Sicherheitsmaßnahmen ergreifen, beispielsweise die Verwendung von HTTPS zur Verschlüsselung der Kommunikation und die Einrichtung einer sicheren Sitzungsverwaltung für Benutzer. Am wichtigsten ist, dass Entwickler ständig auf die neuesten Informationen zu Sicherheitslücken achten und Anwendungen umgehend reparieren und aktualisieren, um die Anwendungssicherheit aufrechtzuerhalten. 🎜Das obige ist der detaillierte Inhalt vonBest Practices für die PHP-Programmierung zur Verhinderung von CSRF-Angriffen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!