シーサーフ(CSRF)に関して学んだこと
まえがき
Laravel初心者が学ぶ課程で気になったことの学習メモとしてアウトプットしています。
@csrf
CSRF(Cross-site Request-Forgery)、Webアプリケーションの脆弱性の一つもしくはそれを利用した攻撃。
追記2021/5/11
@csrf
はCSRF対策として用意されているBladeディレクティブ
注意が必要なwebサイトの特徴
- Cookieを用いたセッション管理
- Basic認証
- SSLクライアント認証
ユーザがログイン状態(Cookieに情報が保持されている)ならば攻撃される可能性がある。。。
こ、こわい
LaravelのcsrfはRailsでいうStrong Parameter的な役割
viewファイルに記述することで簡単に情報を保護することができる。
セキュリティトークン(ワンタイムトークン)の発行。
生成したワンタムトークンをhiddenパラメータでwebブラウザに返す
<form method="POST" action="/profile">
@csrf
...
</form>
POSTリクエストの処理の際にCSRF対策をしなければいけない。
form
とセットで記述する。
laravelでは@csrf
がついていないフォームの送信は例外が発生して受付されない仕様になっている。
参考URL