PHPでのクロスサイトリクエスト偽造(CSRF)攻撃から保護するには、Webサイトから発信された要求がユーザーが真に開始し、悪意のあるサードパルティサイトにfeされていないことを確認するための堅牢なメカニズムを実装することが含まれます。 中核的な原則は、サーバーが正当なユーザーアクションと詐欺的な要求を区別できるようにすることです。これは通常、テクニックの組み合わせを使用して達成されます:
1。シンクロナイザートークンパターン:これは最も一般的で効果的な方法です。 サーバーは、一意で予測不可能なトークン(多くの場合、長いランダムな文字列)を生成し、サーバー側のセッション変数に保存し、ユーザーが提出したHTMLフォームの非表示フィールドとしても含めます。 フォームが送信されると、サーバーは、トークンがセッションに保存されているトークンと一致することを確認します。それらが一致しない場合、要求は潜在的に不正として拒否されます。 Double Submit cookie:
変数を確認してください。 ただし、この方法は簡単にバイパスされるため、常に他の方法に依存しています。PHPアプリケーションでCSRF保護を実装するためのベストプラクティスは何ですか?
<code class="php"><?php session_start(); // Generate a unique token if it doesn't exist if (!isset($_SESSION['csrf_token'])) { $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } // Include the token in the form ?> <form method="POST" action="process_form.php"> <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>"> <!-- ... other form fields ... --> <input type="submit" value="Submit"> </form> <?php // In process_form.php: session_start(); if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) { die("CSRF attack detected!"); } // Process the form data securely } ?></code>CSRF保護を実装するには、1つの手法を使用する以上のものが必要です。 ベストプラクティスには、セキュリティを最大限に活用するためのいくつかの方法を組み合わせた層状アプローチが含まれます。
random_bytes()
など)。 すべての入力を厳密に消毒および検証して、CSRFと組み合わせることができるXSS攻撃のような他の脆弱性を防ぐために、以上がPHPでクロスサイトリクエストフォーファリー(CSRF)から保護する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。