メモ書き:
- とりあえず前提として、現状で3を達成する脆弱性としてCSSXSSが存在する(という理解は正しい?)
- CSRFとセッションジャックの違いとして、はてな等のような長期セッションの場合に、
- CSRFでは本来の利用者のアクセスをトリガとして引き起こされる
- セッションジャックでは、利用者のアクセスのタイミングを問わずなりすませる
- という違いがあるのではないか。
- できることそのものに大差はないが、時間の制約の有無が違いとしてあげられる。
- CSRFとセッションハイジャックは、それぞれ性質が異なる以上、CSRFからセッションハイジャックに繋げることができるならば、より危険性は増すのではないか。
- CSSXSSにより得た情報を利用するCSRFは依然、極めて危険な脆弱性である事は変わらない。
ワンタイムトークンをちゃんと実装するのは面倒、というのは激しく同意。でも、Railsとかで実装されているFlashはこれを満たしているんだっけ。
flash on Catalyst
sub _save_flash { my $c = shift; if ( my $sid = $c->_sessionid ) { if ( my $flash_data = $c->_flash ) { delete @{$flash_data}{ @{ $c->_flash_stale_keys || [] } }; if (%$flash_data) { $c->store_session_data( "flash:$sid", $flash_data ); } else { $c->delete_session_data("flash:$sid"); } } } }
セッション単位に結びつけられてるから、同じセッション上に載った複数のブラウザ(タブブラウザとか)で同時作業するとぶつかるかな。
重要なのは、どうすればみんながすぐに幸せになれるか、ですね。