クロスサイトリクエストフォーファリー(CSRF)攻撃は、ユーザーがそれらを信頼するWebアプリケーションで意図しないアクションを実行するようにトリックするため、特に危険です。 PHPでのCSRF攻撃を防ぐために、これらの戦略に従うことができます。
SameSite
属性を使用します。 SameSite
Strict
またはLax
に設定すると、クロスオリジンリクエストでCookieが送信されないようにすることにより、CSRFを防ぐのに役立ちます。HttpOnly
やSecure
などの適切なセキュリティフラグを使用してCookieが設定されていることを確認します。これらの測定を実装することにより、PHPアプリケーションに対するCSRF攻撃のリスクを大幅に減らすことができます。
PHPでCSRFトークンを効果的に実装するには、いくつかのベストプラクティスが含まれます。
一意のトークンを生成する:暗号化された安全な方法を使用してトークンを生成します。 PHPのrandom_bytes
とbin2hex
関数を使用して、安全なトークンを作成できます。
<code class="php">$token = bin2hex(random_bytes(32));</code>
トークンを安全に保管する:トークンをユーザーのセッションまたはクッキーとして保存します。セッションを使用する場合は、セッション固定攻撃が防止されていることを確認してください。
<code class="php">session_start(); $_SESSION['csrf_token'] = $token;</code>
フォームにトークンを含める:隠された入力フィールドとしてフォームにトークンを埋め込みます。
<code class="php"><input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($token); ?>"></code>
これらのプラクティスに従うことで、CSRF保護メカニズムの完全性を維持するのに役立ちます。
いくつかのPHPライブラリは、CSRF保護の実装を簡素化できます。
CsrfExtension
およびCsrfTokenManager
クラスは、CSRFトークンを生成および検証するための包括的なサポートを提供します。@csrf
ブレードディレクティブを介してフォームに含まれています。Zend\Validator\Csrf
コンポーネントを介してCSRF保護を提供します。これは、フォームに簡単に統合できます。これらのライブラリのいずれかを使用すると、開発時間を節約し、アプリケーションで堅牢なCSRF保護を確保できます。
PHPのフォーム提出でのCSRFトークンの検証には、フォームで送信されたトークンをセッションまたはCookieに保存されているトークンと比較することが含まれます。これが段階的なガイドです:
保存されたトークンを取得します:セッションまたはCookieに保存されているトークンにアクセスします。
<code class="php">session_start(); $storedToken = $_SESSION['csrf_token'];</code>
提出されたトークンを取得:フォームの提出で送信されたトークンを取得します。
<code class="php">$submittedToken = $_POST['csrf_token'];</code>
トークンの検証:保存されたトークンと提出されたトークンを比較します。
<code class="php">if (!hash_equals($storedToken, $submittedToken)) { // Token mismatch, handle the error http_response_code(403); die("CSRF token validation failed"); }</code>
リクエストを続行します。トークンが一致する場合は、フォームデータの処理を進めます。
<code class="php">// Tokens match, proceed with the form submission // Process the form data here</code>
トークンを再生します:オプションで、セキュリティを強化するための提出が成功した後、トークンを再生します。
<code class="php">$newToken = bin2hex(random_bytes(32)); $_SESSION['csrf_token'] = $newToken;</code>
これらの手順に従うことにより、CSRFトークンが適切に検証され、CSRF攻撃からアプリケーションを保護することができます。
以上がPHP CSRF保護:CSRF攻撃を防ぐ方法。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。