投稿

2月, 2012の投稿を表示しています

自分への戒めのためのメモ(CSRF編)

「サービスを作るのは大事だけど ユーザーに迷惑かけちゃいけない」 バグがあってもセキュリティに問題があってもいけない。 昨日はCSRFのことがふっとド忘れしまったので、ここに書いておいて忘れないようにする。 歳を取っているという証拠かw CSRF:  クロスサイトリクエストフォージェリ 具体例として、掲示板に意図しない書き込みをさせられたり、オンラインショップで買い物をさせられたりするなどの被害が起こる。 攻撃の大まかな流れは以下の通り。  簡単な HTML を例示して、その原理を具体的に解説する。 1. 攻撃者が、攻撃用の Web ページを作成して WWW 上に公開する。 (WWW上ででなくとも、未対策のHTMLメーラーにウェブページをHTMLメールとして送信するだけでもよい。)  2.第三者が、攻撃用の Web ページにアクセスする。 3. 第三者は、攻撃者が用意した任意の HTTP リクエストを送信させられる。   4. 送信させられた HTTP リクエストによって、攻撃者の意図した操作が行われる。 (ここで「第三者」とは、被攻撃サイトに意図せずアクセスさせられると言う意味で用いている。) (Wikipediaより引用) iframeでbody onloadでフォームにsubmitするようなhtmlを読ませて自動的に掲示板に書き込みを行わせる等が例としてあげられていた。 利用者側の対策としては、Cookieに依存した攻撃があるのでCookieをこまめに破棄することとか。 サイト運営者側の対策としては、 第三者が知り得ない情報をフォームに入力させる(あるいはフォームの hidden パラメータに設定しておく)というのが基本的な対策方針である。   ここで利用する第三者が知り得ない情報は、推測されにくい文字列であり、かつ総当り攻撃に対して耐性がある必要がある。具体的には以下の方法が挙げられる。 認証情報を入力させる 認証制の Web システムの場合、入力フォームにユーザIDとパスワードを含めるという方法がある。システムの利用者から見れば、既にログイン画面で認証を行っているため冗長な操作であるが、クロスサイトリクエストフォージェリの対策としては最も効果がある。  ワン