■
■右クリックとJavaScriptなアンカーとステータスバー偽装
昨日の日記を見た匿名の人から質問のメールを頂きました。質問内容としては、『今後は右クリックすればOKなんでしょうか』というもの。どんなときに何が右クリックOKなのか不明な質問であったものの、セキィリティー面で気にしているらしいということはわかりました。なんとか誤解を解いておかなくてはいけません。
まずは、適当にツギハギした実験用のHTMLを作成。以下のようなものです。InternetExplorer用に作って実験しています。すみません。
<script type="text/javascript">
<!--
function Help(strFName) {
wPopup = window.open(
strFName,
'wPopup',
'scrollbars=1,width=600,height=400,menubar=1,\
resizable=1,toolbar=1,status=1,location=1'
);
wPopup.focus();
}
// -->
</script>
<ol>
<li>
<a href="http://example.com/"
onclick="Help('http://example.org/');return false;"
onkeypress="Help('http://example.org/');return false;"
id="modori">excample.com</a>
</li>
<li>
<a href="javascript:location.href='http://example.org/';"
onMouseover="window.status='http://example.com/'; return true"
onMouseout="window.status=' '; return true">excample.com</a>
</li>
<li>
<a href="javascript:Help('http://example.org/');"
onMouseover="window.status='http://example.com/'; return true"
onMouseout="window.status=' '; return true">excample.com</a>
</li>
<li>
<a href="http://example.org/"
onMouseover="window.status='http://example.com/'; return true"
onMouseout="window.status=' '; return true">excample.com</a>
</li>
</ol>
このHTMLでは4個のリンクが表示されます。どれもが、example.comへ、いざなうようにみせかけながら、example.orgを表示しようとするものです。comのフリしてorgです。JavaScriptをオンにしているIEでは、アンカーのonMouseoverでステータスバーには、example.comが表示されるようになっています。
昨日の日記では、これらの4個のリンクのうち、3番目のものが、右クリックで作動しない(JavaScriptオンのIEで)というお話をしました。メールをくれた質問者は、じゃぁ今後は右クリックならOKなんだろう、ということなのでしょう。ですが、右クリックの効果は色々でして、1番のリンクではどうなのかというと、example.comに、2番のリンクでは、example.orgに誘導されます。1番と3番は、orgに誘導されない、という意味で効果があったというべきでしょうけれども、2番のリンクでは騙されてしまいかねない結果になります。右クリックは万能ではありません。
なお、JavaScriptを切ってあるならどうなのかについても、動作を見ておいたほうが良いと思います。2番3番は左クリックでも右クリックでも作動しません。1番は、comへ誘導されますので無害です。4番は、onmouseoverで、orgへのリンクであると表示されます。
このように、動作状況はさまざまです。右クリックだから安心だとは言えません。
余談ですが、IEではリンク先を予見するためにステータスバーが重要です。windows.statusに値をほうりこむJavaScriptがあったり文字列をスクロールまでさせていたりするサイトがありますけれど、やめておいたほうが良いと思います。