Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

water-cell
地球人口100億の時代への農業革命をWebテクノロジで支える
https://water-cell.jp
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