クロスサイト リクエスト フォージェリ (CSRF) は、悪意のある Web サイトが正当な Web サイトにリクエストを送信する攻撃の一種です。認証されたユーザー。これにより、攻撃者は、パスワードの変更や不正な購入など、ユーザーが意図しないアクションを実行できる可能性があります。
これを防ぐために使用できる手法がいくつかあります。 PHP における CSRF 攻撃:
1. Cookie だけでなく、GET パラメータと POST パラメータでも認証を要求する
この措置は、GET パラメータと POST パラメータの両方に有効な認証トークンが存在することを要求することで、悪意のある Web サイトが認証されたユーザーに代わってリクエストを送信する機能を制限します。リクエストの POST パラメーター。
2. HTTP Referer ヘッダーの確認
HTTP Referer ヘッダーには、現在のページを参照したページの URL が含まれています。 Referer ヘッダーをチェックすることで、リクエストが正当なソースからのものであるか悪意のある Web サイトからのものであるかを検出できます。
GET と POST の検証パラメータ
Kohana では、 Valid::not_empty() ルールは、GET パラメーターと POST パラメーターが空でないことを検証します。例:
$rules = array( 'get_param' => array( array('not_empty') ), 'post_param' => array( array('not_empty') ) ); $validation = Validation::factory($request->query() + $request->post()) ->rules($rules); if (!$validation->check()) { // CSRF attack detected }
HTTP リファラーヘッダーの確認
Kohana では、Request::referrer() メソッドを使用して参照元の URL を取得できます。ページ。 Referer ヘッダーが有効かどうかを確認するには、期待値と比較します。
$referrer = $request->referrer(); if ($referrer !== $expected_referrer) { // CSRF attack detected }
ワンタイム トークンの使用
最も効果的な方法CSRF 攻撃を防ぐには、ワンタイム トークンを使用します。このトークンはサーバー上で生成され、セッションに保存されます。ユーザーがフォームを送信すると、トークンがリクエストに含まれます。次にサーバーはトークンを検証し、有効な場合はリクエストを完了します。
Kohana にワンタイム トークンを実装するには、次の手順を使用できます。
以上がPHP でクロスサイト リクエスト フォージェリ (CSRF) 攻撃を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。