ホームページ >バックエンド開発 >PHPチュートリアル >PHP 開発におけるクロスサイト リクエスト フォージェリに対処する方法
PHP 開発におけるクロスサイト リクエスト フォージェリに対処する方法
はじめに: インターネットの急速な発展に伴い、Web サイトのセキュリティ問題がますます顕著になってきています。その 1 つはクロスサイト リクエスト フォージェリ (CSRF) の問題です。この記事では、PHP 開発における CSRF 攻撃に効果的に対処する方法を紹介し、具体的なコード例を示します。
サンプル コードは次のとおりです。
// 在用户登录时生成Token,并存储在Session中 session_start(); if (!isset($_SESSION['csrf_token'])) { $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } // 将Token添加到表单中 <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>"> // 在服务器端验证Token session_start(); if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) { die('CSRF攻击检测'); } }
(2) SameSite Cookie 属性の設定
最新のブラウザでは、Cookie の SameSite 属性を設定して、 CSRF 攻撃。 SameSite 属性の値は、Strict、Lax、または None に設定できます。 Strict は、同じサイトからリクエストが行われた場合にのみ Cookie を送信できることを意味し、Lax は、特定の状況 (外部 Web サイトからのリンクをクリックした場合など) で Cookie の送信が許可されることを意味します。 [なし] は、いかなる状況でも Cookie を送信できることを意味し、セキュリティ上の問題が発生する可能性があります。
サンプル コードは次のとおりです。
setcookie('session_id', session_id(), [ 'expires' => 0, 'path' => '/', 'domain' => 'your_domain.com', 'secure' => true, // 只能通过HTTPS发送 'httponly' => true, // 无法通过JavaScript访问 'samesite' => 'Strict' ]);
(2) バックエンド フレームワークとライブラリをタイムリーに更新する
バックエンド フレームワークとライブラリのバージョンを頻繁に更新することで、コードのセキュリティを維持し、既知のセキュリティ脆弱性の発生を防ぐことができます。攻撃者によって悪用されます。
(3) 合理的な権限制御
各ユーザーに最低限の権限を付与し、権限を超えた操作を行わないようにする。
結論: クロスサイト リクエスト フォージェリ (CSRF) は、ネットワーク セキュリティの一般的な問題です。ランダムにトークンを生成し、SameSite Cookie 属性を設定することで、CSRF 攻撃を効果的に防ぐことができます。同時に、コードのセキュリティを維持し、適切な権限制御を行うことも、CSRF 攻撃を防ぐための重要な手段です。
総単語数: 714 単語
以上がPHP 開発におけるクロスサイト リクエスト フォージェリに対処する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。