初心者のためのホームページ作り:第51号

                   毎週金曜日配信 What's New 2003/5/16
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
       初心者のためのホームページ作り/Web for beginner
           http://www.scollabo.com/banban/

                <第51号>

             banban@scollabo.com

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

 当講座は、初心者や中級者が正しい文法と作法を身につけて、プロ級の本格的
な Webページ作成に役立つことを目的に配信されております。

 当講座ではHTML4.01及び XHTML1.1 を中心とした文法が主体となっています。
なお、このマガジンは等幅フォントでお読みいただくと快適に読めるようになり
ます。
  等幅フォントに関しては、「まぐまぐ」の http://www.mag2.com/faq/mua.htm
を参考にするといいでしょう。

  今週のコンテンツ
      ■ JavaScript講座 第9回 --- 関数とイベント
   ■ JavaScriptとJScript --- マイクロソフト独自スクリプト
   ■ コンピューター・ウィルス 第2回

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

◆JavaScript講座 関数とイベント

(関数に関しては、本誌「第33号」でも解説しましたが、改めて説明します。)

 関数とは、小さなプログラムを格納するある種の「変数」のようなもので、必
要な時に、必要なプログラムを呼び出すときに利用します。

 HTML構文の中で、その関数を呼び出すときに利用されるのがイベントです。

◆HTMLにおけるイベント属性とその機能

 HTMLの要素内で記述するイベント属性は以下の通りです。

 ■マウスやキーボードに関するイベント
 onmouseover  マウスが重なったときに発生するイベント
 onmouseout     マウスが離れたときに発生するイベント
  onmousedown    マウスなどのデバイスが押されたときに発生するイベント
 onmouseup   マウスなどのボタンが離れたときに発生するイベント
 onclick    キーボードが押されたときに発生するイベント
 ondblclick     ダブルクリックされたときに発生するイベント
 onkeypless     何らかのキーが押されたときに発生するイベント

 ■ページの読み込みなどに関するイベント
 onload     ページが読み込まれたときに発生するイベント
 onunload       ページが他にページに移動したときに発生するイベント

 ■フォームに関するイベント
 onblur         入力フォームの選択が解除されたときに発生するイベント
 onfocus        入力フォームの入力欄が選択されたとき発生するイベント
 onselect    フォーム内でテキストが選択された際に発生するイベント
 onchange       フォームの内容が変更され、選択が解除された発生する
 onsubmit    フォームのデータが送信されたときに発生するイベント
 onreset    フォームのデータが取り消されたときに発生するイベント

 今回は、この中の幾つかを利用したイベントと、それに関係する関数の作成に
ついて解説します。

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

◆関数とイベント属性を関連させる

 イベントを利用する上で、関数の作成は欠かせません。簡単な関数を作成して
イベント属性と関連させて動作させてみましょう。

 ユーザが独自の関数を定義する書式は、function 命令文を使います。
なお、関数名はユーザが独自につけることができますが、JavaScriptであらかじ
め予約されている名前を利用することはできませんので、注意してください。

 イベント属性は、その値に関数名を記述して関数で設定したプログラムを呼び
出します。

 早速、フォーム内の入力チェックする関数と、それを呼び出すイベント属性を
利用したHTML文を作成しましょう。
 テキストエディタを起動して以下のようにタイプしてください。

 なお、JavaScriptは、小さなミスも許されませんので十分に注意してください。
また、今回はスタイルシートを利用しますので、コロン「:」、セミコロン「;」
を間違えないようにしてください。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_Jis">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>関数とイベント属性</title>
<script type="text/javascript">
<!--
function check() {
	mail = document.myForm.mail.value;
  if (document.myForm.names.value == "") { 
	alert("お名前を入力してください!");
	document.myForm.names.focus();
	return false;
  }
  else if (mail.indexOf ("@",0) <0) {
  alert("メールアドレスを正確に入力してください!");
    document.myForm.mail.focus();
    return false;
	}
 return true;
}
//-->
</script>
<style type="text/css">
<!--
h1 { 
   color: #069; 
   font-size: large; 
   margin: 1em 100px }

form { 
   margin: 1em 100px; 
   padding: 1em 2em; 
   background-color: #ffc; 
   border: 1px solid #000 }
-->
</style>
</head>

<body>
<h1>フォームの入力欄のチェック</h1>
<form name="myForm">
<p>
お名前:
<input type="text" name="names" size="20" onsubmit="return check()">
</p>

<p>
E-Mail:
<input type="text" name="mail" size="30" onblur="return check()">
</p>

<p>
<textarea name="voice" cols="50" rows="5" value="<ご意見>">
</textarea>
</p>

<p>
<input type="submit" value="送信">
</p>
</form>

</body>
</html>

  実行結果
 http://www.scollabo.com/banban/magazine/mmsample/sample_51-1.html

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

◆解説

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
 文書型定義を宣言しています。すべてのHTML文書では、その冒頭で文書がどの
 バージョンの要素タイプ(タグの集合)を利用しているかを、明示的に宣言し
 なければなりません。省略は不可となっております。

<html lang="ja">
 HTMLの言語コードを設定しています。ここでは日本語を指定しています。でき
 る限り、文書内容の言語を指定するようにしましょう。

<meta http-equiv="Content-Script-Type" content="text/javascript">
 文書の中で示されるスクリプトが、JavaScriptであることを示しています。
  meta要素で示されるコンテントタイプ(MIMEタイプ)は、通常、HTTPサーバ
 や、ユーザエージェント(ブラウザ、プロキシを含む)に伝ええられます。

  ブラウザによっては、スクリプトのデフォルトが、JavaScriptと設定してい
 るものもありますが、そうでない場合も考えられます。スクリプトの実行を、
 より確実にするため、この記述は欠かせません。

<meta http-equiv="Content-Style-Type" content="text/css">
 同じく、スタイルシートのコンテントタイプを示しています。

<script type="text/javascript"> 〜 </script>
 JavaScriptのスクリプトデータは、この要素の範囲内で記述されます。
  なお、文書型定義がStrictのため、このような記述になります。

 一般的に従来は、
  <script language="JavaScript"> 〜 </script>
  このように記述されていましたが、Strictでは、非推奨扱いとなっています。

<!-- 〜 //-->
 JavaScriptのスクリプトデータは、このようなコメントを示す範囲で記述しま
 す。これは、スクリプトに対応していないユーザエージェントのための配慮と
 しています。
  このコメントがない場合、非視覚系ブラウザや。JavaScriptをオフにしてい
 る環境では、スクリプト内容が表示される危険があります。
  スクリプトの記述は、あくまで非HTMLデータとして扱われます。

<!-- 〜 -->
 コメントを表す記述で、スタイルシートに対応していないユーザエージェント
 に配慮します。スクリプトで用いるコメントアウトの記述が異なることに注意
 してください。

function check() {
 関数名 check() を設定しています。関数は、{ 〜 } で囲まれた範囲で、プロ
 グラムを記述します。

mail = document.myForm.mail.value;
 HTMLの中で記述されているフォームの name属性と関連付けています。
 name="myForm" で示される「mail」という名前がつけられた入力コントロール
 の内容を、スクリプト内では「mail」という名前の変数に取り込みます。

if (document.myForm.names.value == "") { 
 もし、namesという名の入力コントロールに何も入力されていない場合、という
 意味を持ち、何も入力されていなかった場合には、このブロックを実行します。
 何か入力されていた場合には、ブロックを脱します。

alert("お名前を入力してください!");
 if構文から導かれたブロック内容の1つで、警告ウィンドウを出します。
 
document.myForm.names.focus();
 警告文の後で、入力フォームのフォーカス(選択状態)を合わせます。

return false;
 入力されたの中身を初期値にします。当然何もない(偽)状態です。
 return文は、イベントの戻り値として使われ、submitボタンを押した、フォー
 カスを移動した、というイベント本来の動作を制御します。

else if (mail.indexOf ("@",0) <0) {
 入力された値に、メールアドレスを示すアットマーク(@)があるかどうかを
 判断し、もし存在しなければ警告を出します。

<style type="text/css">
 スタイルシートをHTML内に直接記述する場合には、ヘッダ部に配置します。
 この要素の範囲内に、スタイルシートを実際に記述します。
  スタイルシートも非HTMLデータなので、コメントとして扱います。

h1 { color: #069; font-size: large; padding: 2px 1em; margin: 1em 100px }
 見出し要素の文字の大きさを相対地の「large」、色をややくすんだ青に設定、
 上下の余白を1文字分、左右の余白は 100ピクセル取りました。

form { margin: 1em 100px; padding: 1em 2em; background-color: #ffc; 
     border: 1px solid #000 }
 フォーム全体の背景色をオレンジ色、1ピクセルの太さを持ったクロの枠線を
 配し、上下の余白を1文字分、左右の余白は 100ピクセル取りました。
  また、枠線から内側の余白は、上下に1文字分、左右に2文字分に設定しま
 した。

<form name="myForm">
 フォームを設定しています。
  本来なら form要素には action属性、method属性が必要ですが、今回はスク
 リプトの動作状態を見るためのサンプルとして、あえて記述しませんでした。
  詳しくは、本誌「第19号」を参照してください。
 なお、name属性で示される「myForm」の値は、スクリプト内で実行するフォー
 ムと関連付けるためには必須です。

<p>お名前:
<input type="text" name="names" size="20" onsubmit="return check()"></p>
 フォーム内で、入力コントロールを記述するためには、必ずブロックレベル要
 素内で配置しなければなりません。このため、段落要素を使いました。
  input要素内で示された name属性の値は、スクリプトと関連します。

   ここで示されるイベントは、フォームのデータが送信されるとき、check()
 関数が呼び出されて実行します。

E-Mail:<input type="text" name="mail" size="30" onblur="return check()">
 フォームの入力状態が正しいかどうかを判断する関数を呼び出すイベントが組
 み込まれています。

  ここでも、E-Mailの入力欄から、入力の選択が他に移ったときに、あらかじ
 め設定されていた check()関数が実行されます。
   その役目をしているのが、onblur属性です。つまり、入力コントロールから
 フォーカスを失ったときに、関数が実行されます。今回のハイライトです。

<p><input type="submit" value="送信"></p>
 入力されたデータを、form要素内の、action属性によってで指定された URLに
 送信されます。
  なお、このサンプルでは、どこにもデータは送信されません。念のため。

 このフォームでは、同じ関数が2箇所で実行されます。E-mailの入力後と、フ
 ォームデータの送信時です。名前だけの入力を忘れた場合や、メールアドレス
 の入力忘れに効果を発揮します。

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

◆クロスブラウザ

 次に、ページが読み込まれたときに関数が実行するスクリプトを作成します。
このスクリプトは、「クロスブラウザ」と呼ばれ、私が初めてJavaScriptと付き
合うようになった、いわばユーザのブラウザを見分けて、振り分けるものです。

 ここでは代表的な Webブラウザである Netscape と MSIE を自動的に振り分け
ます。

 テキストエディタで、新規にHTMLを作成します。以下のようにタイプしてくだ
さい。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_Jis">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>クロスブラウザ</title>
<script type="text/javascript">
<!--
function browserCheck(){
  if(navigator.appVersion.charAt(0)>=4)
  check2();
    else { 
    check3();
    }
}
function check2(){
  if(navigator.appVersion.charAt(0)==5)
  check4();
   else {
    check6();
    }
}
function check3(){
  if(navigator.appName.charAt(0)=="N")
  location.href="oldnspage.html";
   else
    location.href="oldiepage.html";
}
function check4(){
  if(navigator.appName.charAt(0)=="M")
  location.href="iepage.html";
   else{
    if(navigator.appName.charAt(0)=="N")
		check5();
   }
}
function check5(){
  if(navigator.appVersion.charAt(0)>=5)
  location.href="nspage.html";
   else{
    check6();
   }
}
function check6(){
  if(navigator.appName.charAt(0)=="M")
  location.href="newiepage.html";
   else{
    if(navigator.appName.charAt(0)=="N")
    location.href="nspage.html";
     else{ location.href="another.html";
		}
	}
}
//-->
</script>
</head>

<body onload="browserCheck()">
</body>
</html>

<ご注意>
 このHTML文書を実行しても、関連するページ「nspage.html」「iepage.html」
 などがない場合には、「ファイルが見つからない」エラーが発生します。
  この文書は何も表示せず、単にユーザのブラウザを判断して、それに対応す
 るページへ誘導しているものです。

  実行結果
 http://www.scollabo.com/banban/magazine/mmsample/sample_51-2.html

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

◆解説

 このスクリプトには、6つの関数があります。最初の関数を実行することで、
ユーザのブラウザを判断し条件分岐して、2番目以降の関数へ導かれます。

■function browserCheck(){if(navigator.appVersion.charAt(0)>=4) check2();
	else { check3(); } }

 最初の関数で、ブラウザのバージョンのみをチェックしています。
  バージョンが4よりも大きい場合、check2() の関数を実行し、それ以外は
 check3() 関数を実行します。
  if 〜 else は、もし○○ならば、●●しなさい、さもなくば、△△です、
 というような条件によって分岐される構文です。

■function check2(){ if(navigator.appVersion.charAt(0=>=5) check4();
		else{ check6; } }

 ブラウザのバージョンが5ならば check4()関数を実行し、それ以外は
 check6() 関数を実行します。
  navigator.appVersion は、navigatorオブジェクトの appVersion という
 プロパティを実行して、ブラウザのバージョンを取得します。

■function check3(){ if(navigator.appName.charAt(0)=="N")
	location.href="oldnsage.html";
	else location.href="oldiepage.html"; }

 ブラウザの名前に「N」があれば、「oldnspage.html」のページに移動し、
 それ以外では、「oldiepage.html」のページに移動します。
  navigator.appName は、navigatorオブジェクトの appName というプロパ
 ティを実行して、ブラウザの名前を取得します。

■function check4(){ if(navigator.appName.charAt(0)=="M")
	location.href="ieage.html";
	else{ if(navigator.appName.charAt(0)=="N") check5(); } }

 この関数では、ブラウザの名前に「M」があれば「iepage.html」ページに移動
 し、名前に「N」が含まれる場合には check5() 関数を実行します。

■function check5(){ if(navigator.appVersion.charAt(0)>=5)
  location.href="nsage.html";
  else{ check6(); } }

 ブラウザのバージョンが5を含めそれ以上ならば、「nspage.html」ページに
 移動し、それ以外ならば check() 関数を実行します。

■function check6(){ if(navigator.appName.charAt(0)=="M")
  location.href="newiepage.html";
  else{ if(navigator.appName.charAt(0)=="N")
  location.href="nspage.html";  else{ location.href="another.html"; }

 ブラウザの名前に「M」が含まれる場合には、「newiepage.html」のページに
 移動し、「N」が含まれる場合には「nspage.html」のページに移動します。
  それ以外のブラウザでは、「another.html」のページに移動します。

■<body onload="browserCheck()">

 このページがブラウザに読み込まれたとき、check() 関数を実行し、それぞれ
 の条件にマッチしたページへ移動します。
  このため、このページには本分が含まれておりません。


 本来、HTMLが論理的な構造によって正しく記述されているならば、ブラウザ別
にページを用意する必要はないと思います。
 しかし、スクリプトによっては、ブラウザの独自仕様などが存在し、どうして
もブラウザ別に切り分けて、それぞれ専用のページに誘導する場合もあります。

 その昔、D-HTML(ダイナミックHTML)という手法が大流行したとき、ほとんど
の制作者は、こぞってクロスブラウザのスクリプトを用意し、ブラウザ別のペー
ジを用意しました。
 また、スタイルシートの実装が異なる場合にも、重宝なスクリプトでもありま
す。

 今回は、スクリプトの内容というより、関数とイベントの関連について学び取
っていただければ幸いに思います。

 次回(6月)のJavaScript講座は、オブジェクトのメソッドとプロパティにつ
いて解説する予定です。

 ■JavaScript 関数、メソッド、プロパティのリファレンス
 現在、猛スピードで各関数、各オブジェクトが持つメソッドとプロパティのリ
 ファレンスを作成しています。私が欲しいと思っていたくらいなので、相当に
 役立つハズです。

  全部で 340を超えるHTMLファイルが必要ですが、次回のJavaScript講座まで
 に間に合わせたいと思っています。

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

◆マイクロソフト社の独自スクリプト

 1995年、それまで単に見るだけの Webページに、インタラクティブに反応する
スクリプトを HTMLの中に持ち込んだのは Netscape社でした。

 当時は、LiveScriptと呼ばれたいたものを、Sun Microsystems社との共同開発
により、JavaScriptと呼ばれるようになりました。
 これによって、Netscapeの人気が爆発的に上がり、世界的なブラウザシェアの
ほとんど独占していました。

 その頃、マイクロソフト社の MSIE(Microsoft Internet Explorer)のバージ
ョンは 2.0でしたが、性能がひどく劣り、それまでに普及していた Netscape
Navigator2.0 に比べて「おもちゃ」とまで言われていました。

 そこでマイクロソフト社は、JavaScriptのエンジンを自分たちのMSIEにも組み
込もうと考えました。しかし、Netscape社はマイクロソフト社へライセンス供与
を認めませんでした。
 熾烈なブラウザ覇権競争の中で、MSIEの性能アップにJavaScriptは外せない課
題だったのでした。危機感を強めたマイクロソフト社は、独自のエンジンを開発
し、「JavaScript 互換の言語」という新たなスクリプトを持ち込みました。

 マイクロソフト社は自らのOS、Windows95を発表したとき、MSIE3.0を標準で搭
載し、瞬く間にブラウザの市場シェアを、Netscape社から奪い取りました。

 マイクロソフト社が考えたのが、スクリプトを読み込んで解釈する機能と Web
ページを操作する機能を、それぞれ分離するということでした。
 スクリプトを解釈する部分は、JScriptと VBScriptでそれぞれ必要になります
が、そのスクリプトに従って Webページを操作する部分は共通で使います。

 マイクロソフトは以前から、プログラムを部品化するための技術を開発し広め
ようとしてきました。
 そこで、COM (コンポーネント・オブジェクト・モデル) と呼ばれる技術を利
用して、スクリプト解釈の機能と Webページを操作する機能を分離しました。

 その結果、スクリプト解釈の機能を別の用途にも使えるようになり、
Windows98から標準搭載されるようになった「Windows Scripting Host」はその
代表的な例で、Webページを操作する機能の代わりに Windows上のデータを扱う
機能を用意したものです。
 これを使うと、Windows上で行う処理を、JScriptや VBScriptで書いて実行す
ることができるようになりました。

 このように、JScriptは元になったJavaScriptとはまったく性質の違ったもの
になりました。
 さらに文法の面でも JavaScriptとの違いがあり、「互換」とはいうものの
JavaScript で書いたスクリプトが必ずしも MSIEで動かないという問題が頻繁に
起こっていました。

 結局、ヨーロッパの標準化機関である ECMA(注1)で作成された ECMA-262と
いう仕様を模索し、両者を元にした標準仕様が作成され、少なくとも文法などの
基本的な部分については共通化することになりました。その名を ECMAScriptと
呼びます。 
 マイクロソフトも Netscapeも、最新版の閲覧ソフトでは ECMA-262仕様に準拠
しているとしています。

 ただ、この仕様は汎用性を目指したために Web関連の機能についてはまったく
扱っていません。
 World Wide Web Consortium (W3C) の Document Object Model (DOM)がその部
分の標準仕様として、1998年1 月に発表され、今後この仕様への準拠が行われる
ことで、やっと Webスクリプティング分野での JavaScript、JScriptの共通化が
進むと期待されています。

 現在のところ、JScriptは、MSIE上でしか動きません。他のプラットフォーム
では、その動作を保証しているわけではありません。

 マイクロソフト JSCript公式サイト(日本語)
 http://www.microsoft.com/japan/msdn/scripting/default.asp

 なお、JScriptでは、今年セキュリティに関する脆弱性(注2)が指摘されて
います。


(注釈用語解説)
 (注1)
 ■ECMA -- European Computer Manufacturers Association
 「ヨーロッパ電子計算機工業会」の略。主に情報通信技術に関する標準を策定
 しています。1961年にヨーロッパのコンピュータメーカーを中心に結成され、
 現在では世界各地に会員企業を持つ国際団体となっています。

 (関連サイト)
 ヨーロッパの標準化組織である ECMAの ECMAScripに関する資料。 
  ECMA-262 Specification 3rd edition (December 1999:英語)
  http://www.ecma-international.org/publications/standards/ECMA-262.HTM

  標準規格 ECMAScriptについての仕様書(W3C:英語)
 ECMAScript Language Binding
 http://www.w3.org/TR/DOM-Level-2-Events/ecma-script-binding.html

 (注2)
 ■JScriptセキュリティ関連ニュース
 Microsoftは、2003年3月19日、Windows が備える「JScript」のスクリプトエ
 ンジンに、深刻な脆弱性が見つかったと発表しました。同脆弱性を利用すれば
 システムを乗っ取ることが可能というもので、同社は深刻度評価を最高レ
  ベルの「緊急」としています。
  同社はセキュリティ情報「MS03-008」を出し対応を呼びかけて、早急に問題
 の脆弱性を解決するパッチをインストールするように呼びかけています。
  ユーザは、「Windows Update」を利用することでパッチをインストールする
 ことができるので、未対応の方はすぐにアクセスしてください。

  情報引用先
  http://www.internetnews.com/dev-news/article.php/2118821

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

◆コンピューター・ウィルス 第2回

 ある程度コンピューターやネットワークの知識、プログラミングに精通してい
れば、誰でもウィルスを作ることができます。
 (別に奨励しているわけではありません。)

 つまり、現実のコンピューター・ウィルスとは、人間の手によって作られバラ
巻かれているのです。言い換えれば「ある程度コンピューターやネットワークの
知識、プログラミングに精通して」いる「悪意を持った」人たちによって作られ
ているのです。

 今回は、コンピューター・ウィルスのプログラムの正体について解説します。

 ■スパイウィルス --- spy virus
 感染すると、パソコンを使うユーザの行動や個人情報などを収集したり、CPU
(マイクロプロセッサ)の空き時間を借用して計算を行ったりするアプリケーシ
 ョンソフトの一種。
  得られたデータはスパイウェアの作成元に送られます。

  また、ある種のスパイウェアは、他のアプリケーションソフトとセットで配
 布され、インストール時にはそのソフトと一括して利用条件の承諾などを求め
 られます。
  スパイウェアはユーザに気づかれないよう、ウィンドウなどを出さずにバッ
 クグラウンドで動作するため、ユーザはスパイウェアがインストールされてい
 ることに気づきにくい特徴を持っています。

  スパイウェアが行なう活動の内容は、実はインストール時に表示される利用
 条件の中に書かれているため、インストール時にその利用条件を承諾してしま
 っている以上、スパイウェアの活動は直ちに違法と言えるものではありません。
  しかし、利用条件をまともに読む人はほとんどいないため、ほとんどのユー
 ザはスパイウェアに気づかず、スパイウェアごとソフトをインストールしてし
 まうのが実情でしょう。

  このため、スパイウェアは事実上無断で個人情報を収集しているとして、プ
 ライバシー擁護団体などの消費者団体を中心に反スパイウェア活動が起こって
 います。
  このようなスパイ行為をするウィルスを「トロイの木馬」と呼ばれます。

 ■カスケードウィルス --- cascade virus
 コンピュータウイルスの種類の一種で、発病すると、画面上の文字が突然滝の
 ようにぽろぽろと落ち、画面が判読不能になってしまいます。

  このウイルスは、IBM PC/AT互換機のMS-DOSで動作するプログラムで、拡張子
 が「COM」の実行可能形式のファイルに感染し、システムに常駐します。
  英語版のMS-DOSでしか正常に動作しないため、日本語MS-DOS上では暴走する
 らしい。

 ■PE型ウイルス --- Portable Executive virus
 Windowsの実行形式ファイル「PEファイル」に感染するコンピュータウイルス。
  PEファイルは拡張子が「.EXE」のファイルで、ほとんどの Windows用ソフト
 ウェアはこの形式で提供されています。PE型ウィルスはこのPEファイルの内部
 に自分の複製をコピーして感染します。
  その際、ファイルが実行されると本来のプログラムの前に自分が実行される
 よう内容を改変するという悪質なものです。

  感染後の挙動は様々ですが、他のウィルスと同じように、ハードディスクの
 記憶内容を破壊したり、他のPEファイルに感染したり、メールなどを通じて他
 のコンピュータへの感染を企てたりします。

 ■デマウィルス --- hoax
 騒動を起こすために人為的に流されたコンピュータウィルスのデマ情報をデマ
 ウィルスと呼びます。実際にはウィルスに関係するわけではありませんが、存
 在しないウィルスへの注意喚起と対策を呼びかけ、ユーザの混乱を狙った悪質
 なチェーンメールがインターネット上でよく流れています。

  デマウィルスを報じる電子メールの内容は、実際には無意味な注意の喚起や
 対処方法の説明、知人などへの無分別なメール転送の依頼などがあります。
  情報の「信憑性」を高めるために、IT関連の大手企業や政府機関の名を挙げ
 「○○社によって確認された」等の情報が掲載されている場合が多く、もちろ
 んこれもデマです。

  「ウィルス」に対する対処方法には、OSやアプリケーションソフトが使用し
 ているファイルの削除を指示する場合が多く、正常にコンピュータが動作しな
 くなるような悪質な指示が記述されている例も数多く報告されています。

  デマウィルス情報により、ユーザはありもしないウィルスに対する対処に時
 間を割かれ、メーリングリスト等にこれらの情報が投稿された場合には無駄に
 トラフィックが増大するなどの悪影響が及ぶ場合があります。

  セキュリティ対応機関やアンチウイルスソフトのメーカーなどでは、コンピ
 ュータウィルスに関する情報と並んでデマウイルスの情報も収集・公開してお
 り、デマウィルスに扇動されることのないよう注意を促しています。

 シマンテック:デマウィルス一覧
 http://www.symantec.com/region/jp/sarcj/hoax.html

◆メールに潜む危険

 ウィルスがメールに添付されることは広く知られています。怪しげなメールに
 添付されているファイルをむやみに開いてしまうと、ウィルスに感染する危険
 性が高まります。

  現在、アメリカでセキュリティ上、一番問題になっているのは、ウィルスで
 はなく「スパムメール」といわれています。

  スパムメールとは、不特定多数にばらまかれる広告や、詐欺まがいの情報、
 「不幸の手紙」や善意を装ったデマといったチェーンメールなど、「迷惑」と
 される電子メールのことを指し、また、受け手の都合を無視し大量にばらまか
 れる宣伝などがスパムメールと呼ばれれます。

  大量にまかれることで、回線上のトラフィック(渋滞)を発生し、企業の活
 動にダメージを与えています。

  特に、宣伝を装ったHTMLメールには大変大きな危険が潜んでいます。HTMLの
 影で、得体の知れないスクリプトや、Java仮想マシンを動かし、ユーザのバッ
 クドア(裏口)をこじ開け、情報を盗み出すことなど、悪意に満ちた危険が存
 在していることを認識する必要があります。

  例えば、ここに挙げるスクリプトは、新たなウィンドウを 10000ページ表示
 します。中身はありませんが、コンピューターのリソースを激しく消費するう
	ちに、次第に動きが鈍くなり、最後はエラーを発生します。
  おそらく最後の 10000回目が無事終了できることはないと思います。

 <script type="text/javascript">
  <!--
 for ( n=0; n<10000; n++ ) {
     window.open();
     }
  //-->
  </script>

  なお、このスクリプトを実行して、コンピューターがまったく反応がなくなり
 泣く泣くリセットするハメに陥り、それが原因でハードディスクが壊れたりして
 も、当方は一切関知しません。

  ちなみに、メモリが 512MB積んであるパソコンで、起動直後にこのスクリプト
 を実行したところ、70回目でエラーを発生し、その後反応がなくなりました。

  ここでは、このような危険なスクリプトを仕掛けるスパムメールがあることの
 一例として取り上げました。例に挙げたスクリプトは、まだ可愛いもので、実際
 には、もっともっと恐ろしいものがあります。
  上記のスクリプトをほんの少し変えるだけで、大切なシステムファイルを削除
 させてしまうことさえ、簡単にできてしまうのです。

  ホームページを公開し、メールアドレスを掲載していた場合には、間違いな
 く狙われます。私のメールアドレスはユニバーサルドメイン(.com)を利用し
 ている関係で、世界中から怪しげなHTMLメールが毎日数通届いています。

  メーラー(メールソフト)の設定は必須条件です。デフォルト(初期設定)
 のままで利用していると大変危険です。フィルタリングやセキュリティレベル、
 HTMLメールの排除など、考えられる対策をしなくてはなりません。

◆個人情報のセキュリティ

  Webサイト上で、特に懸賞やアンケートに答える場合、細心の注意を持つこと
 は大きな意味を持っています。
  うかつにメールアドレスを登録することは避けたいものです。私の場合、懸
 賞サイトなど、何らかの登録には疑いを持っていおり、恐くて近寄れません。

  確かにまじめな企業サイトもありますが、それを運用する人柄までは見えま
 せん。ある日、悪意を持った誰かが、登録された個人情報をサーバから他のメ
 ディアに落とし、それを誰かに売っているかもしれません。

  新聞などの記事にあるように、銀行や百貨店、自治体から個人情報が漏れて
 いる現実を考えると、とても信用するわけにはいきません。
  このメールマガジンを配信している「まぐまぐ」でも例外ではないでしょう。

  メールアドレスに限らず、個人情報の扱いには、細心の注意が必要です。
 できることなら、メールアドレスは複数あるといいかもしれません。

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

今回はここまで、ではでは・・

 今週のおさらいは Webページにも掲載しましたので、是非見ておいてください。
Webページでは HTML文の実行結果のサンプルもあり、より分かりやすく説明して
います。あわせて過去の記事のおさらいも掲載しています。

(今週のおさらい)
 http://www.scollabo.com/banban/magazine/review_051.html

 次週は、5月23日に配信を予定しています。

  予定しているコンテンツ
   ■ Webデザイン 第2回 --- 設計のすすめ
   ■ HTML講座  第2回 --- お約束事(論理的な文書構造とは?)
   ■ XHTML講座 その14 --- ページの印刷
    ■ タグの解説 

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

質問・ご意見ははこちらまで→ banban@scollabo.com

 なお、ご質問の際には、あなたがお使いのOS、ブラウザ、テキストエディタな
ど、なるべく分かりやすく制作環境を明記していただけると回答しやすくなると
思います。
 ただし、個人的な事由により返事が遅れることがあります。ご了承ください。
お急ぎの場合には、当サイト内の掲示板をご利用ください。きっと誰かが答えて
くれると思います。

発行者 ばんばん
協 力 スズキ・コラボレーション http://www.scollabo.com/
配信エンジン まぐまぐ http://www.mag2.com/  (ID 0000090196)

誤字・脱字・変換ミス・表現欠乏などには平にご容赦願います。なお、マガジン
のすべての記述に誤りや重大なスペルミスがある場合、叱咤と罵声と共に私まで
突きつけていただくと幸いに思います。

バックナンバー こちらで公開しています。
プレーンテキスト  http://www.scollabo.com/banban/magazine.html
各号のおさらい  http://www.scollabo.com/banban/magazine/
アーカイブ    http://www.scollabo.com/banban/daf/archive.html
講座教材     http://www.scollabo.com/banban/daf/material.html
まぐまぐの過去記事 http://backno.mag2.com/reader/Back?id=0000090196

配信の変更・中止はこちらです。
個別の手続きは受け付けていませんので、ご面倒でも各自でお願いできれば助か
ります。
当サイトにて http://www.scollabo.com/banban/magazine/top.html
まぐまぐにて http://www.mag2.com/m/0000090196.htm

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

<えでぃた〜ず・るーむ>

 早いもので当メールマガジンの発行が満1年を迎えました。いつも時間に追い
かけられていたので、あっという間でした。

 最初は比較的軽い気持ちで配信を始めましたが、いつの間にかライフワークに
なり多くの読者とコミニケーションすることができました。また、このマガジン
を読み始めてからホームページを立ち上げた読者も少なくありません。本当にう
れしい限りです。

 この先、いつまで続けられるか分かりませんが、私なりに勉強して、読者の皆
さんに少しでも役立てればと思っております。

 一期一会、袖擦り合うも他生の縁、今後ともよろしくお付き合いください。

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

◆著作権について
個人がご自分のPCに保存して利用する以外の記事の転載、引用は基本的に応じ
ておりません。記事中の内容について、無断で使用することを固く禁じます。
 なお、記事中のスタイルシート、HTMLをご自分のページ作成に自由に使ってい
ただいても差し支えありません。

            Copyright(C) 2002-2003  www.scollabo.com/banban/
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓



Copyright(C) 2002-3003 banban@scollabo.com