ホームページ >バックエンド開発 >PHPチュートリアル >クロスサイトリクエストフォージェリを防ぐためにPHPフォームでHTTPリファラーを設定する方法
インターネットの急速な発展とユーザーのニーズのますます複雑化により、Web アプリケーションの要件と機能はますます複雑かつ多様になっています。しかし、これにより Web セキュリティの問題がますます顕著になり、一般的な攻撃手法の 1 つとしてクロスサイト リクエスト フォージェリ (CSRF) 攻撃が挙げられます。
簡単に言えば、CSRF 攻撃とは、攻撃者が特定のサイトで正規のユーザーの ID 認証を使用して、ユーザーの ID になりすまし、ユーザーの許可や知識なしにユーザーの名前で特定のタスクを完了することを意味します。 . 一部の操作上の動作を攻撃する方法。 URL、iframe、画像などを介して悪意のあるリクエストを送信するなど、一般的な攻撃方法が多数あります。CSRF 攻撃を防ぐには、PHP フォームで HTTP リファラーを設定することが効果的です。
それでは、PHP フォームで HTTP リファラーを設定するにはどうすればよいでしょうか?
HTTP リファラーは、リクエストを送信する前に、ブラウザーが現在のページのソース アドレス、つまりリクエストのソースをチェックすることを意味します。リクエストの送信元が、サーバーが受信したリクエスト内の送信元アドレスと同じである場合、リクエストは正当であるとみなされます。したがって、HTTP リファラーを設定することで、フォームに保護層を追加し、フォーム送信の送信元アドレスを制限することで、CSRF 攻撃を効果的に防ぐことができます。
具体的な設定プロセスは次のとおりです:
1. 次のコードをフォーム ページに追加します:
<?php session_start(); $token = md5(uniqid(rand(), TRUE)); $_SESSION['csrf_token'] = $token; ?> <form action="" method="post"> <input type="hidden" name="csrf_token" value="<?php echo $token; ?>"> //其他表单元素 <input type="submit" value="提交"> </form>
まず、フォーム ページでセッションを開き、ランダムなトークンを生成します。CSRF トークンとしてセッションに保存します。トークンを非表示要素に割り当て、フォーム要素の一部としてフォームとともにサーバーに送信します。
2. 次に、次のコードをフォーム処理ページに追加します:
session_start(); if($_POST['csrf_token'] != $_SESSION['csrf_token']) { //不合法的请求 exit("非法请求!"); } //处理表单数据之前。...
フォーム処理ページで、まずセッションを開き、フォーム内の csrf_token を以前のトークンと比較します。セッション比較に保存されます。トークンが矛盾している場合、送信は違法とみなされ、ハンドラーは終了します。それ以外の場合、フォーム データは正常に処理できます。
要約すると、PHP フォームでの HTTP リファラーの設定は難しくありません。フォーム ページでランダムな CSRF トークンを生成し、セッションに保存して、フォーム処理ページでフォームを比較するだけです。 . トークン in とセッション中のトークンで十分です。これにより、クロスサイト リクエスト フォージェリ攻撃を効果的に回避できます。
以上がクロスサイトリクエストフォージェリを防ぐためにPHPフォームでHTTPリファラーを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。