| ホームページを作るにはどうすればよいのか? ファイル転送・SSL・メール送信の仕組み・CGIなどをやさしく解説します |
![]() |
| トップページ | インフォメーション | プロフィール | 更新履歴 | メルマガ | お問い合わせ |
サニタイジング処理
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ■対策:サニタイジング処理 | ||||
| テキストボックスにホームページを作成するような記述を入れて送信すると、送信先のページに、ラジオボタンや | ||||
| 画像を配置できました。 | ||||
| なぜ、このような結果になるのかといえば、送信内容にタグ(<>←これ)が入っているいるからです。 | ||||
| そこでホームページを作成するときは、タグなどの特殊な文字が送信されていないかチェックする機能をつける | ||||
| 必要があります。逆にいえば、送信されてもかまわない文字かどうかのチェックをしなければならないということです。 | ||||
| 一般に危険な文字として次の5つが指摘されています。 | ||||
| &,<,>,",' | ||||
| これらが送信されてきたときは要注意です。 | ||||
| PHPにはタグが送られてきたときに、取り除くための関数が用意されています。 | ||||
| strip_tags()関数がそれにあたります。 | ||||
| strip_tags()関数は、HTMLタグである<>とPHPタグである<?php ?>を取り除く機能を持っています。 | ||||
| さっそく試してみましょう。 | ||||
| 掲示板の表示画面のソースコードを次のように修正します。 | ||||
| <?php $message=$_POST['MESSAGE']; $message=strip_tags($message); print "<html><title>入力結果</title>"; print "<body>"; print ("確認画面<br>"); print ("<br>"); print ("" .$message); print "</body>"; print "</html>"; ?> |
||||
| 1.タグを含む文字列を入力 | ||||
| ラジオボタンを表示させるソースを入力してみます。 | ||||
| チェックがない場合、「次へ」ボタンを押すと、送信先のページにラジオボタンが作成されます。 | ||||
![]() |
||||
| 2.タグが取り除かれる | ||||
| 関数を導入したので、タグの記述がチェックされ、削除されました。 | ||||
| 残った文字列は「音楽に挑戦」という部分です。これで安全性が高まりました。 | ||||
![]() |
||||
| PHPのstrip_tags()関数で対応できない部分は、自分で関数を作成して安全な文字へ置き換えてしまうことです。 | ||||
| 他の言語を使っていてチェックをかける場合は、その言語でチェック関数を作ります。 | ||||
| 上に表示されているソースコードをIEの「ソースの表示」で見てみます。 | ||||
| 次のような変換がされているのが分かりました。 | ||||
| & → & | ||||
| < → < | ||||
| > → > | ||||
| " → " | ||||
| ' → ' | ||||
| (余談ですが、ホームページビルダーの編集モードで、タグを含んだソースコードを書き込み、コピーしてから | ||||
| メモ帳に貼り付けると文字変換されています。上記のソースコードで使われていない & と ' についても | ||||
| 確認しました) | ||||
| 変換済みのソースコード | ||||
| <?php<BR> <BR> $message=$_POST['MESSAGE'];<BR> <FONT color="#3300ff">$message=strip_tags($message);</FONT><BR> print "<html><title>入力結果</title>";<BR> print "<body>";<BR> print ("確認画面<br>");<BR> print ("<br>");<BR> print ("" .$message);<BR> print "</body>";<BR> print "</html>";<BR> ?> |
||||
| 入力データにタグ属性をもつ文字が打ち込まれないとは限りません。 | ||||
| サニタイジング処理を行うことで、ホームページの安全性が高まります。 | ||||
| TOPへ戻る | ||||