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

フォームを受け付けるWebサイト管理者(情報機器の設定のためにウェブインタフェースを提供しているあらゆるメーカーを含む)は、以下のような対策を施さなければならない。
 
よく知られた対策方法として、FormをHTTP GETする際に、[[暗号論的擬似乱数生成器|暗号論的擬似乱数]]値(いわゆる[[nonce]])を、[[Cookie]]値およびformのhidden値として発行し、HTTP POST時にその両者の値の同一性を検証するという方法がある(偽造を防ぐため、どちらかの値は[[暗号に安全なハッシュ関数]]を通しておく)。外部サイトの作成者はこれらの値を偽造することができないため、不正なPOSTはすべてサーバ側で検出できる。現代的なHTML Form生成用ライブラリの多くは、この機能をあらかじめ備えている。
 
より安易な方法として、[[HTTPリファラ]] (Referer) を用いて対策することもできる。CSRFは外部のドメインからのHTTPリクエストであるため、HTTPのRefererを取得し照合することによって外部サイトからの不正なPOSTを判別できる。第三者のサイトから、Refererを偽造したPOSTを送信させることは不可能であるため、Referer値をチェックすることで不正な送信を検出できる。ただしHTTPリクエストの送信者自身がRefererを偽造することは容易であるため、Referer照合はCSRFの対策とはなっても、不正なセッションが作成されることへの対策にはならない点に注意が必要である。また、リファラはブラウザの設定で容易に非送信にすることができる。リファラを非送信に設定した利用者は正規のサイトから手続きを行っても不正としてはじかれてしまうため、この対策方法の導入には検討が必要である。
263

回編集