Risiken antizipieren und präventiv zuschlagen: Eine bahnbrechende Strategie zur Verhinderung von PHP Cross-Site Request Forgery (CSRF)

WBOY
Freigeben: 2024-02-25 13:06:02
nach vorne
642 Leute haben es durchsucht

Der vom PHP-Redakteur Xinyi verfasste Artikel „Risiken antizipieren und präventiv zuschlagen: Pionierstrategien zur Prävention von PHP Cross-Site Request Forgery (CSRF)“ untersucht eingehend die Bedrohung der Website-Sicherheit durch CSRF-Angriffe und schlägt eine Reihe von Präventionsstrategien vor, um Entwicklern effektiv zu helfen Schützen Sie sich vor solchen Angriffen. Durch eine prägnante und klare Sprache bietet der Artikel den Lesern einen praktischen Leitfaden zur Sicherheitsprävention, der es ihnen ermöglicht, die Sicherheit der Website und der Benutzer während des Entwicklungsprozesses besser zu schützen.

1. Formularübermittlung CSRF-Angriff

Bei dieser Art von Angriff wird das Opfer dazu verleitet, auf einen gefälschten Link oder eine gefälschte Schaltfläche zu klicken, wodurch der Browser des Opfers eine POST-Anfrage an die Website des Angreifers sendet und dadurch die vom Angreifer erwarteten Aktionen ausführt.

2. GET-Anfrage CSRF-Angriff

GET-Request-CSRF-Angriffe funktionieren, indem sie das Opfer dazu verleiten, auf einen gefälschten Link oder ein gefälschtes Bild zu klicken, wodurch der Browser des Opfers eine GET-Anfrage an die Website des Angreifers sendet und dadurch die vom Angreifer beabsichtigten Aktionen ausführt.

3. JSON-Anfrage-CSRF-Angriff

JSONRequest CSRF-Angriffe funktionieren, indem sie das Opfer dazu verleiten, auf einen gefälschten Link oder eine gefälschte Schaltfläche zu klicken, wodurch der Browser des Opfers eine jsON-Anfrage an die Website des Angreifers sendet und dadurch die vom Angreifer beabsichtigten Aktionen ausführt.

4. AJAX-Anfrage-CSRF-Angriff

ajaxRequest CSRF-Angriffe funktionieren, indem sie das Opfer dazu verleiten, auf einen gefälschten Link oder eine gefälschte Schaltfläche zu klicken, wodurch der Browser des Opfers eine AJAX-Anfrage an die Website des Angreifers sendet und so die beabsichtigte Aktion des Angreifers ausführt.

Wegweisende Strategien zur Verhinderung von CSRF-Angriffen

1. Verwenden Sie CSRF-Token

Das

CSRF-Token ist eine zufällige Zeichenfolge , die auf der Serverseitegeneriert und auf der Clientseite in einem Cookie gespeichert wird. Beim Senden einer Anfrage sendet der Client das CSRF-Token als Teil des Http-Anfrageheaders an den Server. Der Server prüft, ob das CSRF-Token gültig ist, und führt bei Gültigkeit den angeforderten Vorgang aus; bei Ungültigkeit lehnt er die Anfrage ab.

Codebeispiel:

<?PHP

// 生成CSRF令牌
$csrfToken = bin2hex(random_bytes(32));

// 在Cookie中存储CSRF令牌
setcookie("csrf_token", $csrfToken, time() + 3600, "/");

// 检查CSRF令牌是否有效
if ($_SERVER["REQUEST_METHOD"] === "POST") {
if (!isset($_POST["csrf_token"]) || $_POST["csrf_token"] !== $_COOKIE["csrf_token"]) {
die("Invalid CSRF token");
}
}

// 执行请求的操作
...

?>
Nach dem Login kopieren

2. Verwenden Sie das SameSite-Attribut

Das

SameSite-Attribut verhindert, dass Browser Cookies bei Cross-Site-Anfragen senden. Es kann auf einen der folgenden drei Werte eingestellt werden:

  • Lax: Der Browser sendet Cookies bei Cross-Site-Anfragen, aber nur bei Anfragen gleicher Herkunft.
  • Streng: Der Browser sendet bei Cross-Site-Anfragen keine Cookies.
  • Keine: Der Browser sendet das Cookie in einer standortübergreifenden Anfrage, unabhängig davon, ob die Anfrage vom gleichen Ursprung stammt.

Codebeispiel:

<fORM action="submit.php" method="post">
<input type="hidden" name="csrf_token" value="<?php echo $csrfToken; ?>">
<input type="submit" value="Submit">
</form>
Nach dem Login kopieren
<?php

// 检查SameSite属性是否有效
if ($_SERVER["REQUEST_METHOD"] === "POST") {
if (!isset($_POST["csrf_token"]) || $_POST["csrf_token"] !== $_COOKIE["csrf_token"]) {
die("Invalid CSRF token");
}
}

// 执行请求的操作
...

?>
Nach dem Login kopieren

3. Verwenden Sie den Content-Security-Policy (CSP)-Header

Der CSP-Header verhindert, dass der Browser Ressourcen von Websites Dritter lädt. Es kann so eingestellt werden, dass bestimmte Arten von Ressourcen wie Skripte, Stylesheets und Bilder zugelassen oder blockiert werden.

Codebeispiel:

<meta http-equiv="Content-Security-Policy" content="default-src "self"; script-src "self" "https://example.com"; style-src "self" "https://example.com"; img-src "self" "https://example.com";">
Nach dem Login kopieren

4. Verwenden Sie den Cross-Origin Resource Sharing (CORS)-Header

CORS-Header ermöglicht Browsern das Senden domänenübergreifender Anfragen an andere Domänen. Es kann so eingestellt werden, dass bestimmte Arten von Anforderungen zugelassen oder abgelehnt werden, z. B. GET, POST, PUT und DELETE.

Codebeispiel:

<meta http-equiv="Access-Control-Allow-Origin" content="https://example.com">
<meta http-equiv="Access-Control-Allow-Methods" content="GET, POST, PUT, DELETE">
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonRisiken antizipieren und präventiv zuschlagen: Eine bahnbrechende Strategie zur Verhinderung von PHP Cross-Site Request Forgery (CSRF). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:lsjlt.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!