So-net無料ブログ作成
検索選択

CSRF 攻撃 [プログラミング]

mixi には入ってないので詳細もわからないし、いちいちはやりものに反応
しているときりがないので静観していたが高木さんの日記に取り上げられているので、
CSRF攻撃のことをちと書いてみる。

http://takagi-hiromitsu.jp/diary/20050427.html#p01

全体的に、わかりやすく世の中の誤解を解くする解説になっているけど、
間違っているんじゃないかなぁと思うところがある。対策の例としてある以下のコード

 <input type="hidden" name="sessionid" value="セッション追跡用cookieの値"> 


セッション追跡用cookie の値(セッションID)を入れちゃうと、
JavaScript を使って CSRF 攻撃されないだろうか。
ここで hidden 属性に入れるのは、直前(1ページ目と2ページ目の間)に
サーバー側で生成されたランダムな値では?
でもって、その値をセッション変数にも入れておいて、 hidden で渡されてきた値と
そのセッション変数の値を比較する、と。
#セッション変数は、高木さんのページにも解説があるように、
#Webアプリケーション側で、セッションIDに結び付けて記憶している情報

セキュリティ対策のことで、高木さんの書いていることを間違っていると
書くのは勇気がいるというか、「簡潔な対策方法」の部分以外については、
正しく解説されているので、なおさら自分のほうが間違っているような気がしてくるけど・・・

そうそう、それから、mixi の対策を、その場しのぎと書いているところ見かけたが、
その場しのぎ以外の方法ってあるんだろうか。
そのうち、CSRF 脆弱性検出ツールなんてのが、販売されるんだろうけど、
きっと役に立たないんでしょうなぁ。

追記
 ん、あっ、いや高木さんのコード例でも大丈夫なような気がして来た。
なんとなく、フォームのパラメータとして cookie の値をやりとりするのはいやな気がするけど
XSS 脆弱性がなければ攻撃者が cookie を見れるわけではないし・・・
Trackback なんか打って恥かいてしまったか?

私が、セッションIDよりもセッション変数の値のほうが良いと思えるのは、たぶん
Webプログラミング言語では、セッションIDを意識せずにセッション変数を取り扱えるように
なっていて、「セッションIDを hidden 属性で Set して」といわれても、ん?と思ってしまうから
だろう(ちょっと調べないとやりかたがわからない)。
ソースの可読性も考えると、やっぱり私はセッション変数にランダムな値を設定する。
(サーバーのメモリ使っちゃうけど)


nice!(0)  コメント(0)  トラックバック(1) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 1

Struts の同期トークンで CSRF 防止(ゲリラ的餡子ページ 2005-05-10 01:25)

mixi というソーシャル・ネットワーク・サイトで Cross-Site Request Forgeries(以下 CSFR�..

この記事のトラックバックURL:
※言及リンクのないトラックバックは受信されません。