現在のネットワーク セキュリティの脅威環境では、クロスサイト リクエスト フォージェリ (CSRF) 攻撃が非常に一般的な攻撃方法です。この攻撃手法は、システムの脆弱性を悪用し、ユーザーが知らない間に特定の操作を実行させることで攻撃者の目的を達成します。 PHP言語開発においては、CSRF攻撃をいかに回避するかが非常に重要な課題となっています。
CSRF 攻撃の原理
まず、CSRF 攻撃の原理を理解しましょう。 CSRF攻撃とは、本質的にはユーザーの身元認証情報を利用した攻撃手法です。攻撃者は通常、Web サイトでの転送操作などの特定のページまたは操作をターゲットにし、その操作に対する悪意のあるリクエストを作成し、そのリクエストを何らかの方法でユーザーに送信します。ユーザーが知らないうちにこの操作を実行すると、悪意のあるリクエストが実行され、ユーザーに損失が生じる可能性があります。
PHP 言語開発では、クロスサイト リクエスト フォージェリ攻撃を回避するには、通常、次の 3 つの側面が関係します。
トークン検証は、CSRF 攻撃を防ぐ一般的な方法です。このようにして、サーバーはページ内にランダムなトークンを生成し、それをセッションに保存します。ユーザーがフォームなどを送信すると、サーバーは送信されたデータに正しいトークンが含まれているかどうかをチェックします。正しいトークンが含まれている場合、操作は実行されます。正しいトークンが含まれていない場合、サーバーは操作を拒否します。
PHP 言語開発では、次のコードを使用してランダム トークンを生成できます:
$token = uniqid(rand(), true); $_SESSION['csrf_token'] = $token;
フォームやその他の操作を送信するときに、次のコードを使用してトークンを確認できます。 ##
if($_SESSION['csrf_token'] !== $_POST['csrf_token']){ // 验证失败 }else{ // 验证成功 }
$referer = $_SERVER['HTTP_REFERER'];
if(empty($_SESSION['csrf_token'])){ $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } $csrfToken = $_SESSION['csrf_token']; setcookie('csrf_token', $csrfToken, time() + 3600, '/', '', false, true);
if($_COOKIE['csrf_token'] !== $_POST['csrf_token']){ // 验证失败 }else{ // 验证成功 }
以上がPHP 言語開発におけるクロスサイト リクエスト フォージェリ攻撃を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。