Laravel-CSRF保護

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>
  • すべての送信リクエストへのCSRFトークンが含まれているため、JavaScriptHTTPライブラリを使用してJavaScript駆動型アプリケーションを簡単に構築できます。

  • つまり、ファイル resources/assets/js/bootstrap.js Laravelアプリケーションのすべてのトークンを登録し、 meta 保存するタグ csrf-tokenAxios HTTP library

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

次のコード行について考えてみます。これらは、入力として2つのパラメーターを受け取るフォームを示しています。email そして message

<form>
   <label> Email </label>
      <input type = "text" name = "email"/>
      <br/>
   <label> Message </label> <input type="text" name = "message"/>
   <input type = ”submit” name = ”submitButton” value = ”submit”>
</form>

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

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

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

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

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

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

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

<form method = ”post” >
   {{ csrf_field() }}
   <label> Email </label>
   <input type = "text" name = "email"/>
   <br/>
   <label> Message </label>
   <input type = "text" name = "message"/>
   <input type = ”submit” name = ”submitButton” value = ”submit”>
</form>

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

{
   "token": "ghfleifxDSUYEW9WE67877CXNVFJKL",
   "name": "TutorialsPoint",
   "email": "[email protected]"
}

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