CSRF は、Web アプリケーションに対するクロス サイト フォージェリ攻撃を指します。 CSRF 攻撃は、システムの認証されたユーザーが実行する不正なアクティビティです。そのため、多くの Web アプリケーションはこれらの攻撃を受けやすいです。
Laravel は次の方法で CSRF 保護を提供します -
Laravel には、アクティブなユーザーセッションごとにトークンを生成する組み込みの CSRF プラグインが含まれています。これらのトークンは、操作またはリクエストが該当する認証されたユーザーによって送信されたことを検証します。
Laravel での CSRF 保護の実装については、このセクションで詳しく説明します。 CSRF 保護についてさらに進める前に、次の点に注意してください。
CSRF は、Web アプリケーション内で宣言された HTML フォーム内に実装されます。 Laravel の CSRF 保護ミドルウェアがリクエストを検証できるように、非表示の検証済み CSRF トークンをフォームに含める必要があります。構文を以下に示します。 -
JavaScript HTTP ライブラリを使用すると、JavaScript 主導のアプリケーションを簡単に構築できます。これには、すべての送信リクエストに CSRF トークンが含まれます。
ファイル、つまりresources/assets/js/bootstrap.jsには、すべてのものが登録されますLaravel アプリケーションのトークンであり、Axios HTTP ライブラリを使用してcsrf-tokenを保存するmetaタグが含まれています。
次のコード行を考えてみましょう。emailとmessageの 2 つのパラメータを入力として受け取るフォームが表示されます。
上記のコードの結果は、エンド ユーザーが表示できる以下のフォームです。 -
上記のフォームは、承認されたユーザーからの入力情報を受け入れます。これにより、Web アプリケーションがさまざまな攻撃を受けやすくなる可能性があります。
送信ボタンにはコントローラー セクションの機能が含まれていることに注意してください。postContact関数は、関連付けられたビューのコントローラーで使用されます。以下に示します。 −
public function postContact(Request $request) { return $request-> all(); }
フォームには CSRF トークンが含まれていないため、入力パラメーターとして共有される機密情報はさまざまな攻撃を受けやすいことに注意してください。
次のコード行は、CSRF トークンを使用して再設計されたフォームを示しています。 −
達成された出力は、以下に示すようにトークンを含む JSON を返します。 −
{ "token": "ghfleifxDSUYEW9WE67877CXNVFJKL", "name": "TutorialsPoint", "email": "contact@tutorialspoint.com" }
これは、送信ボタンをクリックして作成された CSRF トークンです。
以上がLaravel - CSRF保護の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。