12時33分00秒 [Web関連]
Internet ExplorerやSafari等のステータスバーの表示を偽装できてしまうサンプル。
上記の画像の上にマウスを乗せると、ステータスバーには、リンク先として、「http://www.nishishi.com/」と表示されます。
ところが、実際にクリックしてみると、IEやSafariでは、異なるページに飛んでしまいます。(Mozilla系ブラウザ(Firefoxなど)は、ステータスバーに表示されるリンク先にちゃんと飛ぶようです。)
※Operaも該当するという話が出てますが、私の環境では、Opera8.5でも、Opera7.51でも、ステータスバーには何も現れませんでした。ただ、実際に移動する先は、IEやSafariと同じですが。
form要素の中に、a要素で囲まれた「画像の送信ボタン」を配置すると、こうなります。ステータスバーには、a要素のhref属性に指定したURLが表示されるんだけど、クリックしたときには、「フォームの送信ボタン」の方が機能して、form要素のaction属性に指定したURLに飛んでしまうというものです。
<form action="★">
<a href="◆"><input type="image" src="(画像)"></a>
</form>
ここで問題なのは、ステータスバーに表示されるURLと、実際に飛ぶURLが異なると言うこと。form要素で指定した方に飛んでも、a要素で指定した方に飛んでも、ステータスバーの表示と実際の移動先が一致していれば、悪用されることはなかっただろうけど。
スクリプトを一切使っていないので、該当ブラウザを使う限り防ぎようがないのが怖いですね…。しかも、実現方法が簡単だから、なんか流行りそう…。(既に流行ってる?)
この話で、「Firefox(Mozilla)はIEより優れているんだ!」という話にはならないで欲しいなあと思います。ここで重要なのは、「『ブラウザの表示が必ずしも信用できない』と普段から思っているべきだ」ということで。「どのブラウザを使うのが安心か」ということではないのです。
(ちなみに、私は最近は比較的Firefoxをメインに使っています。IEも使ってますが。)
ところで、今回の記述方法ように記述した場合、form要素で指定した方に移動するのと、a要素で指定した方に移動するのと、HTMLの仕様としては、どちらの解釈が正しいんだろうか。
上記は、画像の送信ボタン(input要素のtype属性にimageを指定)ではなく、普通の送信ボタン(input要素のtype属性にsubmitを指定)にしてみたところ。
画像の送信ボタンでも、通常の送信ボタンでも、動作は一緒なんですね。(この形態だとクリックするのをためらう人も多いと思うけど。)
個人的には、ここでa要素に含まれているのは、「送信ボタン」なわけだから、a要素のリンクが機能するのはおかしいんじゃないかと思ったりするのですが。(だから、ステータスバーの表示と実際の動作が一致してないという点でIEやSafariは問題だけど、a要素よりform要素で指定した方に飛ぶという動作(IE・Opera・Safari)は正しいのではないか…と思ったり。)
でも、a要素の中にimput要素を含めちゃいかんわけじゃないしなあ。(文法的には。)
…ふと今疑問に思ったんですが、a要素にテキストボックスとかを含めてみたら、どういう動作になるんだろう?
…というわけで実験。↓
ひい。
FirefoxやOperaの場合は、リンクとして機能しちゃいました!
IEの場合は、マウスの形状がリンクになってるけど、クリックしても移動せず。でも、入力欄として文字を入力することもできず…。^^;;; (キーボードで移動すれば入力はできるようだ。)
◆IEのステータス・バーを偽装する手法が複数公開される(@IT Pro)
◆ステータスバー偽装(@Okumura's Blog)
この日記へのコメントはお気軽に! コメント数:0件
コメント数: 0件