Windows TIPS
[User Interface]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

Webページの仕事妨害攻撃に対処する方法

解説をスキップして操作方法を読む

デジタルアドバンテージ
2002/12/07
対象OS
Internet Explorer 5.0
Internet Explorer 5.01
Internet Explorer 5.5
Internet Explorer 6.0
Webページによっては、JavaScriptの機能を悪用して、利用者の迷惑などお構いなしに、次々と新しいブラウザ・ウィンドウを表示し、仕事妨害攻撃を加えるものがある。
これに対処するには、Escを連打しながらウィンドウをクローズする。


解説

 Webサイトの中には、Webブラウザの機能を逆手にとって、強引なマーケティング活動を行ったり、面白半分にユーザーを恐怖に陥れたりするページを公開しているところがある。例えば読者は、どこかのWebページを表示させた途端、Webブラウザのウィンドウが次々と表示されてしまい、収拾に困ったという経験はないだろうか。あわててウィンドウを閉じようとしても、すぐに新しいウィンドウが表示されたり、ほうっておいても、時間の経過とともに次々とウィンドウが表示されたりするというものだ。

 これは、一部のアダルト・サイトが使う常套手段の1つで、これにより次々と広告ページを開いたり、別の提携サイトのページを表示したりする(この手のアングラ・サイトは、相互にトラフィックを交換していることが多い)。ならばアダルト・サイトなど見なければよいと思う向きもあろうが、検索サイトを使って探し物をしていると、ひょんなことから、アダルト・サイトのURLが結果に紛れ込むこともある。検索結果として表示されるタイトル情報やURL情報から一見してアダルト・サイトと分からないと、うっかりクリックしてしまい、ウィンドウ生成による仕事妨害攻撃にさらされることになる(実際、筆者の細君はこれで真っ青になった経験を持つ)。

 たいていは、JavaScriptの機能を悪用して、新しいウィンドウを生成している場合が多い。一定時間ごとにタイマを仕掛けて新しいウィンドウを開いたり、ウィンドウがクローズされるというイベントをキャプチャして、そこでまた新しいウィンドウを開いたりしているのだ。

 例えば、Webサーバが手元にあるなら、次のJavaScriptを「neverclose.html」という名前で適当なフォルダに保存して、Webブラウザで表示してみよう。ただしソース中で参照しているので、保存するファイル名は必ず「neverclose.html」にしておくこと(注意:これをローカルのファイルとして保存し、Webブラウザで直接オープンしてもよいが、その場合は表示が非常に高速に行われるので、以後で解説する操作が正しく行えなくなる可能性がある)。

<SCRIPT language="JavaScript">
function OpenWin(){
win=window.open("neverclose.html","","resizable=yes,width=300,height=200");
}
</SCRIPT>
<TITLE>悪魔のウィンドウ</TITLE>
<BODY onUnload="javascript:OpenWin()">
このページは閉じられない
</BODY>

 簡単に説明すると、1行目から5行目まで(「<SCRIPT …… </SCRIPT>」の部分」)がJavaScriptのプログラムで、300×200ピクセルのウィンドウを表示するOpenWinという関数を作っている。7行目の「<BODY onUnload=……>」とは、ブラウザのウィンドウが閉じられたときに発生するイベントで、このタイミングで先のOpenWinを呼び出している。すなわち、ウィンドウを閉じると、次のウィンドウが表示され、何回やってもウィンドウは表示されたままになるというわけだ。

上記のコードをHTMLファイルとして保存して、IEで表示したところ
このページは、ウィンドウが閉じられると次のウィンドウ(同じHTMLファイル)を表示するので、普通にクローズ・ボックス(右上の×マーク・ボタン)をクリックするだけでは閉じることができない。

 JavaScriptを使った仕事妨害攻撃から根本的に身を守りたいと考えるなら、IEのスクリプト機能をオフにしてしまえばよい([インターネット オプション]ダイアログの[セキュリティ]タブにある[レベルのカスタマイズ]ボタンから表示される[セキュリティの設定]ダイアログの[アクティブ スクリプト]を無効にする)。ただしこの場合には、「善良な」WebページのJavaScriptも実行されなくなるので注意が必要である。ゾーン設定と組み合わせれば、ゾーンごとに設定を変えたり、特定のサイトだけ設定を変えたりすることができる。この詳細は別稿「Windows Tips:IEのセキュリティ設定を変更してセキュリティ機能を強化する」を参照のこと。


操作方法

Escキーを連打する

 それでは、次々と表示されるウィンドウを停止するにはどうするのか。これには、Escキーを連打すればよい。Escキーは、IEのページ・ダウンロードを中止するキーである。JavaScriptによるプログラムは、ページをダウンロードしてから実行されるので、次々と表示されるページのダウンロードを中断させれば、JavaScriptの実行を阻止できる。ただし、これにはタイミングよくEscキーを押さなければならない。タイミングが早すぎたり、遅かったりすると、ページ・ダウンロードはうまく中断されない。このためEscキーを連打しながら、意に反して表示されたウィンドウを次々とクローズしていけば(マウスでウィンドウの右上にあるクローズ・ボックスをクリックする)、JavaScriptの実行を阻止しながら、余計なウィンドウを1つずつ閉じることができる。

 Escキー以外にも、Alt+F4キーを押して、ウィンドウを強制的に終了させるという手段もある。しかし前出のようにウィンドウの終了時に新たなウィンドウを表示するタイプのスクリプトでは、Escと同じように連打しなければならないが、Alt+F4はあらゆるウィンドウの強制終了キーなので、うっかり別のウィンドウを消してしまう危険がある。この点、Escキーなら、たいていのアプリケーションは無視するのでこうした危険性は少ない。

 例えば、先ほどのJavaScriptの例で表示したウィンドウで試してみた。表示するページの情報が少ないので、Escキーが有効に効くタイミングは非常にタイトだが、何とか閉じることができた。具体的には、ページの内容(「このページは閉じられない」という文字列)が表示される前にEscが効いて真っ白なウィンドウが表示されたり、次のようにIEによってエラーが表示されたりすれば、JavaScriptは実行されないので、通常どおりにウィンドウをクローズできる。

Escキーによって処理が取り消されたことをことを知らせるメッセージ
このメッセージが表示されれば、もはやJavaScriptは実行されず、ウィンドウを閉じることができる。

 もしキーを押すタイミングがシビアすぎて、どうしても消すことができなければ、いったんログオフするか、Windowsを終了(シャットダウン)もしくは再起動させるという方法もある。最近のマシンならば、電源ボタンを押せば強制的にシャットダウンが行われるようになっているが、これを実行する場合はほかのアプリケーションで作業中のファイルなどを確実に保存して終了させておく必要がある(念のために、ほかのすべてのアプリケーションを終了させてからしばらく(数十秒)待ち、ディスクのアクセス・ランプがまったく点灯しなくなってから実行すること)。くれぐれもいきなり電源コンセントを抜いたりしないようにしていただきたい。そういうことをすると、アプリケーションやシステムが保持していたデータなどが壊れ、例えばファイル・システムが破壊されて(整合性が取れなくなって)しまったりする。

 なお、ウィンドウ地獄から解放されたら、インターネット一時ファイルに保存されてしまったキャシュの内容や、履歴の内容をクリアすることをお忘れなく([インターネット オプション]ダイアログの[全般]タブで操作可能)。End of Article

「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間