ホームページを作るにはどうすればよいのか? ファイル転送・SSL・メール送信の仕組み・CGIなどをやさしく解説します
ホームページのお助けサイト 〜はじめてホームページを作る方のためのサイトです〜
トップページ | インフォメーション | プロフィール | 更新履歴 | メルマガ | お問い合わせ 

スクリプトの混入              

■スクリプトの混入
 
掲示板やWebメール、商用サイトには、ユーザーに入力をうながす部分があります。
そこに悪意のあるスクリプトを入力されると、情報を盗まれたり、改ざんされたりします。
特に掲示板はユーザーの書き込みを許可しているので、入力チェックをしていないと、悪意のあるスクリプトが
サーバー側に残ってしまうことになります。
 
今回は、掲示板へ文章ではなく、ラジオボタンを追加してしまう事例をあげて解説します。
それではまず、簡単に原理を説明します。
 
 
1.住所を入力する   
 
住所入力画面でなので、住所を入力します。入力しおわったら「次へ」ボタンを押します。
ここでは「北海道」と入力しました。
 
2.確認画面        
 
確認画面です。入力された文字が正しく送信されています。
 
 
ソースコードを記しておきます。
入力チェックを行っておらず、セッション変数も使っていないファイルです。
 
nyuuryoku.html
 
kakunin.php
 
3.メタキャラを入力してみる
 
テキスト内に以下の文字を打ちこみます。
 
北海道<br>電話番号:<input type="text" name="tel">
 
入力がおわったら、「次へ」ボタンを押します。すると……。
 
 
4.項目が作成された?
 
なんとテキストボックスが作成されてしまいました。
 
 
なぜ、こんな現象が生じてしまったのでしょうか?
ソースコードを見てみましょう。入力内容がそのまま反映されています。。
つまり、ADDRESS → $address へと変数を経由して、入力内容が運ばれたのです。
 
 
ホームページを改ざんしているわけでもなければ、サーバー内のファイルを書き換えているわけでもありません。
ただ文字を入力しただけです。
では、掲示板上で同じことをすると、どうなるでしょうか?
 
もしあなたのホームページに掲示板があって、書き込みを許可している場合、入力チェックを行っていないと
大変なことになります。
文章だけ表示されるものと思っていると、送信ボタンやチェックボックスまで、埋め込まれてしまいます。
 
本当にたくさんの項目を送ることができるのでしょうか?
事例で確認してみます。
 
 
 
1.記事を書き込む      
 
ホームページを作成するときのように、タグを打ち込みながら書いていきます。
他のサイトへ値を送信する記述があるなら、http: からはじまるフルパスURLをACTIONに指定し、画像ファイルを
呼びたい場合も、フルパスURLで指定します。
入力が終わったら、ボタンを押します。
 
 
書き込む内容
<FORM METHOD="POST" ACTION="http://www.starthp.com/php/newhomepage.php">
  ごぶさたです。今度、ホームページを作りました。<BR>
  3サイト同時オープンです。<BR>
  <INPUT TYPE="RADIO" NAME="SELECT" VALUE="OKAIDOKU">今月のお買い得情報<BR>
  <INPUT TYPE="RADIO" NAME="SELECT" VALUE="MUSIC">作曲に挑戦!<BR>
  <INPUT TYPE="RADIO" NAME="SELECT" VALUE="CAR">車選びのツボ<BR>
  <INPUT TYPE="SUBMIT" VALUE="サイトへGO">
</FORM>

今月は仕事で長野のほうへ行っていました。そこで見つけたちょっと変わった店があります。<BR>
まずは外見から。<BR>
<IMG src="http://www.starthp.com/nagano/ie.jpg" width="100" height="100" border="0"><BR>
どうです? 変でしょ。<BR>
 
2.結果を表示する    
 
ラジオボタン、送信ボタン、画像が表示されています。
掲示板サイトへ書き込んでいるわけではありませんが、これらの項目(オブジェクト)を送り込めることは分かって
もらえたと思います。
 
 
このようにテキストボックスやテキストエリアを経由して、スクリプトが混入されると予期しないページができてしまいます。
掲示板では、ユーザーの送信した情報は保存されるので、サーバー側に残ることになります。
ホームページの作成者は、上にみるような他者によるスクリプト混入を防がねばなりません。
 
スクリプト混入を無効化する処理は、サニタイジングと呼ばれています。
ユーザー側から送信された文字をチェックして、安全な文字に置き換えたり、削除したりします。
サニタイジングについては次の箇所で解説することにします。
 
※掲示板のサービスに、データベースを使うときは、操作コマンドが打ち込まれないかチェックする必要があります。
そうしないと、データベース内のデータをすべて削除されかねません。
 
 
 
 
 
 
 
 
TOPへ戻る




Copyright (C) starthp.com, All Rights Reserved.