Heim >Backend-Entwicklung >PHP-Tutorial >Wie schützt man PHP-Funktionen vor CSRF-Angriffen?

Wie schützt man PHP-Funktionen vor CSRF-Angriffen?

WBOY
WBOYOriginal
2024-05-01 14:39:01389Durchsuche

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.

如何防止 PHP 函数受到 CSRF 攻击?

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.
  1. Token generieren:

Erstellen Sie ein einzigartiges und schwer zu erratendes Token und speichern Sie es in einer Sitzung oder einem Cookie.
    <form action="change_password.php" method="post">
      <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>" />
      <!-- 其他表单字段 -->
    </form>
  1. Fügen Sie das Token in das Formular ein:

In das Formular, das Sie schützen möchten, fügen Sie das Token als verstecktes Feld ein.
    <?php
    if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
      // 令牌验证失败,拒绝请求
      exit('Invalid request');
    }
    ?>
  1. Validierungstoken:

Stellen Sie bei der Verarbeitung der Formularübermittlung sicher, dass das Token mit dem in der Sitzung oder im Cookie gespeicherten Token übereinstimmt. Wenn keine Übereinstimmung vorliegt, wird die Anfrage abgelehnt.

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!

Stellungnahme:
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