18
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

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

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); になる。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
18
Help us understand the problem. What are the problem?