ホームページ > バックエンド開発 > PHPチュートリアル > PHP でクロスサイト リクエスト フォージェリ (CSRF) 攻撃を防ぐにはどうすればよいですか?

PHP でクロスサイト リクエスト フォージェリ (CSRF) 攻撃を防ぐにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-02 16:37:11
オリジナル
714 人が閲覧しました

How Can I Prevent Cross-Site Request Forgery (CSRF) Attacks in PHP?

PHP での CSRF の防止

クロスサイト リクエスト フォージェリ (CSRF) は、悪意のある Web サイトが正当な Web サイトにリクエストを送信する攻撃の一種です。認証されたユーザー。これにより、攻撃者は、パスワードの変更や不正な購入など、ユーザーが意図しないアクションを実行できる可能性があります。

CSRF 攻撃の軽減

これを防ぐために使用できる手法がいくつかあります。 PHP における CSRF 攻撃:

1. Cookie だけでなく、GET パラメータと POST パラメータでも認証を要求する

この措置は、GET パラメータと POST パラメータの両方に有効な認証トークンが存在することを要求することで、悪意のある Web サイトが認証されたユーザーに代わってリクエストを送信する機能を制限します。リクエストの POST パラメーター。

2. HTTP Referer ヘッダーの確認

HTTP Referer ヘッダーには、現在のページを参照したページの URL が含まれています。 Referer ヘッダーをチェックすることで、リクエストが正当なソースからのものであるか悪意のある Web サイトからのものであるかを検出できます。

Kohana PHP フレームワークでの実装

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 にワンタイム トークンを実装するには、次の手順を使用できます。

  1. 生成ランダムなトークンを取得してセッションに保存します。
  2. ユーザーが指定した形式でトークンを含めます。
  3. リクエストを完了する前にサーバー側でトークンを検証してください。

以上がPHP でクロスサイト リクエスト フォージェリ (CSRF) 攻撃を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート