LoginSignup
19
18

More than 5 years have passed since last update.

Location: javascript:alert(1) が返ってきた時のブラウザの動作

Last updated at Posted at 2013-10-30

DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
http://www.slideshare.net/harupu/denatechcondenasameorigin-policy#33
こちらの資料の方が詳しいです

以下古い記述

Http ヘッダのリダイレクト先を示す箇所にjavasciptの実行スクリプトが含まれていた場合にどうなるか。
オープンリダイレクタがあり、なおかつ使っているフレームワークやライブラリの抜けがあるとかそんな場合ぐらいしかないと思われるけれど、気になったので軽く調べた。

Chrome

リダイレクトされない
developer tools上でレスポンスが表示されない。

Chrome Cananyでは"Request Headers CAUTION: Provisional headers are shown."の表示がHeadersに出る。

Safari

javascript:alert(1) にリダイレクトされる
しかし、javascriptは実行されない。
"SafariはこのようなJavasScriptの使用方法を許可していません。"とでる。

→ Safari 6.1にアップデートすると、リダイレクトもされなくたった。

Firefox

リダイレクトされない。
"コンテンツデータ破損エラー"として扱われる。
コンソールから応答ヘッダに”Location: javascript:alert(1)”が入っていることが確認できる。

Opera

chromeと同じ

Internet Explorer 10

リダイレクトされない
"このページは表示できません"と表示される。
開発者ツールの応答ヘッダーから確認できる。

その他のブラウザ

未確認

検証方法

最初phpでヘッダー直接書いて試していたのだけれど、express.jsでjavascript:から始まる文字列をLocationへ含めることができた。

app.get('/redirect', function(req, res){
    res.redirect(301, 'javascript:alert(1);"://";');
});

javascript:alert(1); をそのまま入れると、 返ってくるuriは /javascript:alert(1); になる。

19
18
2

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
19
18