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

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

WBOY
WBOYnach vorne
2024-02-25 13:04:05642Durchsuche

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");
}
}

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

?>

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>
<?php

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

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

?>

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";">

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">

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:lsjlt.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen