Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CSRF対策のやり方、そろそろアップデートしませんか / Update your knowledge of CSRF protection

CSRF対策のやり方、そろそろアップデートしませんか / Update your knowledge of CSRF protection

PHPerKaigi 2024 • Day 1での登壇資料です。
https://phperkaigi.jp/2024/
https://fortee.jp/phperkaigi-2024/proposal/0d0f8507-0a53-46f6-bca6-23386d78f17f
※ Authorizationヘッダーを利用したBearerトークン等の活用については言及していません。

YAMAOKA Hiroyuki

March 08, 2024
Tweet

More Decks by YAMAOKA Hiroyuki

Other Decks in Programming

Transcript

  1. 自己紹介 - 山岡広幸(やまおかひろゆき) - Bluesky: @hiroy.kotori.style - X: @hiro_y -

    PHPは大学のころ、バージョンは3のころから - 最近はSvelteKitとかも
  2. Laravelの場合 - CSRF Protection - Laravel 10.x - Bladeテンプレートでは @csrf

    と書けばOK - <input name="_token"... - VerifyCsrfToken middlewareで検証
  3. CookieのSameSite属性 - 【参考】 Site: 公開接尾辞リスト + 直前のドメイン名 - 指定できる値 -

    Strict: 同一siteの場合のみ送信 - Lax: 異なるsite間の場合、GETの場合だけ送信 - None: どんな場合でも送信
  4. Next.jsの例 - How to Think About Security in Next.js |

    Next.js (Server Actionsに関する記事) - Same-Site Cookieがブラウザで デフォルトで付くから防げるとか 🤔 (指定しようね) - HostとOriginのチェックも追加でやるよ、とのこと
  5. オススメパターン - 2⃣ セッション用CookieにはSameSite属性を指定 - __HOST- pre fi xを付けられるとなおよい -

    3⃣ サーバー側ではOriginヘッダーをチェック - 4⃣ 追加として、Sec-Fetch-* ヘッダーもチェック - 送られてきていたらチェックするぐらい