「クロスサイトリクエストフォージェリ」の版間の差分

ナビゲーションに移動 検索に移動
編集の要約なし
フォームを受け付けるWebサイト管理者(および情報機器設定用ウェブインタフェースを用意しているあらゆる情報機器のメーカー)は、以下のような対策を施さなければならない。
 
http_refererの情報に頼ら現代的対策方法の1つとして、FormをHTTP GETする際に、[[暗号論的擬似乱数生成器|暗号論的擬似乱数]]を[[電子署名Cookie]]しばしば改ざん防止のために[[メッセージ認証コード]]も付けられる付きの[[Cookie]]値およびformのhidden値として発行し、HTTP POST時にその両者の値の同一性を検証するという方法がある。Cookieには電子署名が付けられているため、第三外部サイトの作成者はこれらの値変更・偽造することができないため、不正なPOSTを送信はすべてサーバ側で遮断ことができない。現代的なHTML Form生成用ライブラリは、この仕組みの実現を支援する機能を備えている。
CSRFは、外部formからのhttp_requestであるため、環境変数のhttp_refererを取得し照合することによって簡単に判定することが可能である。攻撃者自身の環境ではhttp_refererを捏造することが可能であるが、CSRFは匿名性を重視するため、第三者のインターネット接続環境で実行させることが重要となる。第三者の環境においてhttp_refererを偽装させる事は、上記に述べられる手法では不可能であるため、http_refererをモニタリングするのみで簡単に対策することが出来る。掲示板スクリプトは、掲示板荒らしの対策として同様な機能を実装しているものが大半である。
 
http_refererを用いて対策することもできる。CSRFは外部formからのhttp_requestHTTPリクエストであるため、環境変数のhttp_refererを取得し照合することによって簡単に外部サイトからの不正なPOSTをすることが可能る。攻撃者自身の環境ではhttp_refererを捏造することが可能であるが、CSRFは匿名性を重視するため、第三者のインターネット接続環境で実行させることが重要となる。第三者の環境においてhttp_refererを偽装させる事は、上記に述べられる手法では不可能であるため、http_refererをモニタリングするのみで簡単に対策することが出来る。掲示板スクリプトは、掲示板荒らしの対策として同様な機能を実装しているものが大半である。
http_refererの情報に頼らない方法として、FormをHTTP GETする際に、[[暗号論的擬似乱数生成器|暗号論的擬似乱数]]を[[電子署名]]([[メッセージ認証コード]])付きの[[Cookie]]値およびformのhidden値として発行し、HTTP POST時にその両者の値の同一性を検証するという方法がある。Cookieには電子署名が付けられているため、第三者はこれを変更・偽造することができず、不正なPOSTを送信させることができない。現代的なHTML Form生成用ライブラリは、この仕組みの実現を支援する機能を備えている。
 
<!--以下、一般的な対策手法ではないためコメントアウト--><!--いえ、これは現代的な手法です。以下の説明は少し問題がありますが、このアプローチは本質的なものであるので(refererベースより良い)、改善して上に加えました。--><!--
第三者が知り得ない情報をフォームに入力させる(あるいはフォームの hidden パラメータに設定しておく)というのが基本的な対策方針である。ここで利用する第三者が知り得ない情報は、推測されにくい文字列であり、かつ総当り攻撃に対して耐性がある必要がある。具体的には以下の方法が挙げられる。
;認証情報を入力させる:認証制の Web システムの場合、入力フォームにユーザIDとパスワードを含めるという方法がある。システムの利用者から見れば、既にログイン画面で認証を行っているため冗長な操作であるが、クロスサイトリクエストフォージェリの対策としては最も効果がある。
;ワンタイムトークンを利用する:入力フォームに、第三者に推測されにくい文字列を hidden パラメータとして指定しておき、フォームの情報を受け取る段階でそのパラメータの整合性をチェックするという方法である。そのパラメータが整合性のチェックでしか使われない一時的なデータであることが多いために「ワンタイムトークン」と呼ばれる。但し、第三者が知り得ない情報として有効である限りは、必ずしも「ワンタイム」である必要は無い。
また、[[CAPTCHA]]などが対策として挙げられる文献もあるが、このような[[チューリングテスト]]は[[インターネットボット|ボット]]による分散・多発型攻撃への一般的な対策であり、必ずしも推測されにくい文字列であることや、総当り攻撃に対して耐性があることを保証するものではないため、[[CAPTCHA]]で表示される文字列について別途セキュリティ的な観点で評価する必要がある。-->
 
== 「ぼくはまちちゃん」 騒動==
匿名利用者

案内メニュー