Laravel - CSRF保護

王林
王林オリジナル
2024-08-27 10:50:53679ブラウズ

CSRF は、Web アプリケーションに対するクロス サイト フォージェリ攻撃を指します。 CSRF 攻撃は、システムの認証されたユーザーが実行する不正なアクティビティです。そのため、多くの Web アプリケーションはこれらの攻撃を受けやすいです。

Laravel は次の方法で CSRF 保護を提供します -

Laravel には、アクティブなユーザーセッションごとにトークンを生成する組み込みの CSRF プラグインが含まれています。これらのトークンは、操作またはリクエストが該当する認証されたユーザーによって送信されたことを検証します。

実装

Laravel での CSRF 保護の実装については、このセクションで詳しく説明します。 CSRF 保護についてさらに進める前に、次の点に注意してください。

  • CSRF は、Web アプリケーション内で宣言された HTML フォーム内に実装されます。 Laravel の CSRF 保護ミドルウェアがリクエストを検証できるように、非表示の検証済み CSRF トークンをフォームに含める必要があります。構文を以下に示します。 -

<form method = "POST" action="/profile">
   {{ csrf_field() }}
   ...
</form>
  • JavaScript HTTP ライブラリを使用すると、JavaScript 主導のアプリケーションを簡単に構築できます。これには、すべての送信リクエストに CSRF トークンが含まれます。

  • ファイル、つまり resources/assets/js/bootstrap.js には、すべてのものが登録されますLaravel アプリケーションのトークンであり、Axios HTTP ライブラリを使用してcsrf-tokenを保存するmeta タグが含まれています。

CSRF トークンのないフォーム

次のコード行を考えてみましょう。 emailmessage の 2 つのパラメータを入力として受け取るフォームが表示されます。

<form><form><br/>   <label> Email </label><br/>      <input type = "text" name = "email"/><br/>      <br/><br/>   <label> Message </label> <input type="text" name = "message"/><br/>   <input type = ”submit” name = ”submitButton” value = ”submit”><br/></form><!--入力タイプ=--><!--入力タイプ=「テキスト」名前=「メールアドレス」--></form>

上記のコードの結果は、エンド ユーザーが表示できる以下のフォームです。 -

Contact Form

上記のフォームは、承認されたユーザーからの入力情報を受け入れます。これにより、Web アプリケーションがさまざまな攻撃を受けやすくなる可能性があります。

送信ボタンにはコントローラー セクションの機能が含まれていることに注意してください。 postContact 関数は、関連付けられたビューのコントローラーで使用されます。以下に示します。 −

public function postContact(Request $request) {
   return $request-> all();
}

フォームには CSRF トークンが含まれていないため、入力パラメーターとして共有される機密情報はさまざまな攻撃を受けやすいことに注意してください。

CSRF トークンを使用したフォーム

次のコード行は、CSRF トークンを使用して再設計されたフォームを示しています。 −

7f573103973b59006cef7218b9dbb423
  {{ csrf_field() }}
  2e1cf0710519d5598b1f0f14c36ba674 Email 8c1ecd4bb896b2264e0711597d40766c
  cffb8ab08dc2690be7e7c174fc292533
  076402276aae5dbec7f672f8f4e5cc81
  2e1cf0710519d5598b1f0f14c36ba674 Message 8c1ecd4bb896b2264e0711597d40766c
  ecbecb6fa716175e062271c78baed136
  10a0fe194b870ed7fbf5c14cd457807c
f5a47148e367a6035fd7a2faa965022e

達成された出力は、以下に示すようにトークンを含む JSON を返します。 −

{
   "token": "ghfleifxDSUYEW9WE67877CXNVFJKL",
   "name": "TutorialsPoint",
   "email": "contact@tutorialspoint.com"
}

これは、送信ボタンをクリックして作成された CSRF トークンです。

以上がLaravel - CSRF保護の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:Laravel - 契約次の記事:Laravel - 契約