[セキュリティ]
CSRF対策
- 要はフォームのPOST時にいたずらをされるのを防ぐ必要がある
- ワンタイムトークンをフォームに配置して、それを受け取ったサーバがトークンを検証する
PHPによる簡易な実装
FreeStyleWikiのCSRF問題
実はこのFreeStyleWikiにもCSRF対策用の実装はない。2005年12月 5日にIPAから勧告されているが。
- 上記については対策を入れた
https://github.com/hangingman/fswiki/pull/23
対応内容
- FreeStyleWikiのPOST時にCSRFトークンのチェックを入れるようにした(コレ自体はRailsでもデフォルトである実装)
- `Plack::Middleware::CSRFBlock`の機能を使った
- Plackによるページ配信時は `<head><meta name="csrf-token" content="c9677a0040c32a67"/>...` のような形でCSRFトークンがメタタグに入る
- POST時に`Plack::Middleware::CSRFBlock`が挿入したトークンを `SEC: c9677a0040c32a67` の形式でPOSTのパラメータに含ませることでverifyを行う