【PHP】LaravelでのCSRF対策
LaravelにはCSRF対策が簡単にできるような仕組みが組み込まれている。また、必ずCSRF対策をしないといけない。
そのため、form
を使うときには必ず<form>
内に@csrf
を記述する必要がある
<form action="/create" method="POST"> @csrf ... </form>
@csrf
は以下のように展開される(Ub7ebV8XbFCTtZyenNoFYyK9ctDzaj09wbp2R7II
の部分は毎回、ランダムな値になる)
<form action="/create" method="POST"> <input type="hidden" name="_token" value="Ub7ebV8XbFCTtZyenNoFYyK9ctDzaj09wbp2R7II"> </form>
この_token
も他の値と一緒に送信され、検証が行われる。もし、用意したトークンと一致しなかった場合、419 Page Expired
というエラーになる
CSRF(cross-site request forgeries: クロスサイトリクエストフォージェリ)
しーさふ と読む
Webアプリケーションの脆弱性の1つ
よそのサイトの機能を呼び出す攻撃
CSRFについてかみ砕いて説明してみる – blog.ISHINAO.net
別のサイトのページから悪意のあるリクエストを受け付けないようにする必要がある
以下のような方法が一般的