はじめに
今回は、CSRFについて書いていきます!!
現在Laravel学習中のため、Laravelでの記述方法についてもさらっと言及します。
CSRFとは
CSRF(クロスサイトリクエストフォージェリ)とは、Webアプリの脆弱性を利用したサイバー攻撃の一種で、以下のような流れで攻撃してきます。
- 攻撃者(悪い人)が罠となるサイトを用意する
- あるWebアプリにログインしているユーザーがそのサイトにアクセスする
- サイトに仕掛けられた罠リンク(URL)をクリックすると、ユーザーの意図しないリクエストがWebアプリに送信されてしまう
CSRF対策
サーバーサイドでしか分からないランダムな文字列(トークン)を生成し、そのトークンをinputタグのhidden要素でformに埋め込み、送信されたトークンと保存されているトークンが一致するかを確認することで、正しいリクエストであるかどうかチェックする、といったやり方でCSRF対策を行います。
Laravelでは、formタグの下に以下のように記述するだけで、ランダムな文字列を勝手に埋め込んでくれます。
{{ csrf_field() }}
これは
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
と同様の意味であり、Laravel
@csrf
と書いてもOKです。
おわりに
世の中には悪い人がたくさんいるから気をつけなければいけませんね。。。