例)
アラート"メッセージ" を表示する JavaScript
javascript:alert("メッセージ");コピー&ペーストでブラウザのアドレスバーに張り付ける
alert("メッセージ");従って、alert("メッセージ"); で文字列検索が実行されます。
書いていて思ったのですが、javascript の文で検索が実行されるというのは良いアイディアですね。
もし、その javascript が悪意のある javascript であり、それなりに有名になっていれば、それについての内容が記載されたウェブページがヒットして、自然にユーザの目に留まる可能性があるわけです。
上記の例は Chrome の例ですが、私が日常的に使用している他のブラウザでも挙動を調べてみました。ブラウザバージョンとともに挙動を記載します。
Chrome
バージョン:35.0.1916.114 m挙動:
javascript:の部分が削除され、それ以降の文字列で検索が実行される。Internet Explorer
バージョン:9.0.8112.16421挙動:
javascript:の部分が削除され、それ以降の文字列で検索が実行される。Firefox
バージョン:29.0.1挙動:
アドレスバーには「javascript:alert("メッセージ");」がそのまま入力されるが、エンターを押しても JavaScript が実行されない。Chrome と Internet Explorer は同じ挙動(javascript:の部分が削除され、それ以降の文字列で検索が実行される。)を示しました。
この動作の実装は、Internet Explorer で言えば、IE9 で取り入れられたようです。(参考文献1)
情報の日付を見ると、2011年2月ですから、今から 3 年くらい前ですね。
上記のような対策が取り入れられていたのに全然気が付きませんでした。
(そのころは、あまり JavaScript を扱うような生活をしていなかったのが原因かもしれません。)
Firefox だけは、他のブラウザとは異なり、アドレスバーには「javascript:alert("メッセージ");」がそのまま入力されるが、エンターを押しても JavaScript が実行されないという挙動を示しました。
参考文献2によると、Firefox 6.0 の時に取り入れられた修正により、動かなくなったようです。
この修正は JavaScript 自体が使えなくなったというよりも、参考文献3 で示されているように、アドレスバーに入力された javascript: による javascript の実行では、現在表示されているページの権限を、実行される javascript へ継承しなくなったことが原因とのことです。
どういうことかというと、参考文献3 に書かれているようにアドレスバーで javascript を実行するときには、ページ内部に記載されている javascript とは異なるコンテキストで実行されるようです。
従って、ページ内部の javascript ではアクセスできる windowオブジェクトが、アドレスバーから実行した javascript からはアクセスできないとのことです。
そのため、windowオブジェクトのメソッドである alert は実行できないという結果になります。
試しに、Firefox のアドレスバーにて、
javascript:1+1;
と入力すると、2 という計算結果がページに表示されます。
つまり、JavaScript 自体の実行は無効化されていないことがわかります。
Chrome や Internet Explorer では、コピー&ペーストした時には javascript: は削除されるものの、手動で入力すれば javascript を実行できてしまいます。
また、Firefox では主要なオブジェクトにアクセスできなくすることで安全性を高めていますが、悪意のあるものによって、未知の脆弱性や未知の手法によりユーザの安全性が脅かされる可能性は否定できません。
従って、自分自身が理解できないものをブラウザのアドレスバーに入力するのは絶対にやめるべきです。
むしろ、自分自身が理解できない・意味の分からない操作を行うように第三者に指示されていたとしても、その操作は絶対に行うべきではありません。
(一時期、パソコンのハードディスクの中身をすべて削除するコマンドが、役に立つコマンドであると偽られてインターネット上に出回っていた時期もありました。インターネット上の情報は全て善意で成り立っているとは考えてはいけません。)
参考文献
1:
IE9 RC Minor Changes List - IEInternals - Site Home - MSDN Blogshttp://blogs.msdn.com/b/ieinternals/archive/2011/02/11/ie9-release-candidate-minor-changes-list.aspx
2:
Firefox 6.0 ではロケーションバーで JavaScript が使えない - とくにあぶなくないRiSKのブログ
http://sscrisk.hatenablog.com/entry/20110818/1313678966
http://sscrisk.hatenablog.com/entry/20110818/1313678966
3:
アドレスバーからjavascript:を実行できなくするブラウザ側の対策について | MemeTodohttp://meme.efcl.info/2011/06/javascript.html
4:
ブラウザのアドレスバーにJavaScriptを入力して実行するhttp://p--q.blogspot.jp/2013/08/javascript.html
技術詳解: ロケーションバーに入力するJavaScript
http://pcnetbeginners.seesaa.net/article/261504135.html
IE9 にてアドレスバーに『 javascript: 』をペーストできない - マイクロソフト コミュニティ
http://answers.microsoft.com/ja-jp/ie/forum/ie9-windows_vista/ie9/b6cab666-ce70-e011-8dfc-68b599b31bf5
コメントを投稿 (ここをクリックしてコメント投稿フォームを表示)
コメント投稿機能について