Laravel - CSRF保護

王林
リリース: 2024-08-27 13:24:38
オリジナル
635 人が閲覧しました

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 トークンを使用して再設計されたフォームを示しています。 −

ログイン後にコピー

{{ csrf_field() }}







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

{
   "token": "ghfleifxDSUYEW9WE67877CXNVFJKL",
   "name": "TutorialsPoint",
   "email": "contact@tutorialspoint.com"
}
ログイン後にコピー

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

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

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