1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OriginヘッダによるCSRF対策について

Last updated at Posted at 2020-06-15

CSRF対策はトークン埋め込み(+CookieのSameSite属性)が定番だが、Originヘッダを用いた対策もあると知ったため、試してみた。

結論

IE, Edge等で防御できないので、Originヘッダだけの対策は不十分。
トークン埋め込み、SameSiteの設定など、他の対策も取るべき。
SameSite属性はIEで非対応のようで、またログイン不要サイトでもSameSiteでは対策できないため、泥臭いがトークンが一番確実
※追記 Can I useより、SameSite属性はIE11のwin10の2017 Fall Creators Update以降は有効とのこと。それ以前やWin7等は非対応。

試した結果

ブラウザ 対策可否 備考
Chrome 同一ドメインでもorigin飛ぶ
FireFox 同一ドメインでもorigin飛ぶ
Edge (非chromium版) × 別ドメインでもorigin飛ばない
IE11 × 別ドメインでもorigin飛ばない

※いずれも2020/6/15時点の最新版

意外なことに、Edgeが対応してないが、MDNを見ると、POSTでは送られないバグがあるとのこと。はやくchromium版になって欲しい。

* Not sent with POST requests, see bug 10482384.

IEについてはMDNには対応とあるが、送られている気配が無く、よくわからない。
Edgeが漏れる時点でこの対策だけを取る解は無いので、真面目に調べてない。

また試していないが、MDN曰くAndroid版FireFoxも明示的に有効にしないと送られないらしい。
なかなか足並みがそろっておらず、この対策だけでは厳しい。

調査方法

ごく普通のhtml fromの送信先を同一ドメイン、別ドメインと変えて、POSTリクエストのヘッダを見ただけ。
JavaScriptからの送信は確かめていないが、この試験の時点で適当な罠サイトでボタン押されたらアウトだということは分かる。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?