ウェブアプリケーションは、セキュリティに注意しないといけません。
例えば、前回作成したメールのフォームの本文に
「
<script language="javascript">
window.alert("test!!!");
</script>
」
と書いて、送信ボタンを押すと、ウィンドウが表示されます。
なぜそうなるかというと、
ウェブブラウザで動作するjavascriptのコードが入力されたからです。
このときウェブ上で入力したjavascriptが解釈されてメッセージが
表示されます。このようにタグを含んだ特殊な文字列を入力されることに
より、こちらが意図しない動作が起きてしまいます。
この意図しないことをウェブアプリケーションにもたらす状況を
クロスサイトスクリプティングといいます。
特殊なタグをエスケープする
上記のようなことを避けるため、フォームの入力において
ユーザーからの入力をチェックする必要があります。
特に、javascript等を含むHTML多雨具を無効にする必要があります。
このときは、htmlspecialchars()関数を使います。
サンプルコードの実行結果はこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title>セキュリティ HTMLタグ、javascriptを無効にする</title> <link rel="stylesheet" href="../style.css"> </head> <body> <h2>test 商品送付依頼</h2> <form action="" method="post"> <textarea rows="10" cols="50" name="product"></textarea><br> <input type="submit" value="送信"> </form> <?php if( isset($_POST["product"])){ $newProduct = htmlspecialchars( $_POST["product"] ); echo $newProduct . "購入<br>"; } ?> </body> </html> |
この関数は入力された文字列の内、ブラウザが解釈する特殊な文字を
HTMLのエスケープシーケンスに変換します。
このエスケープ処理を行うことで、HTMLタグをお無効化し、
javascriptによる不正な操作も防ぐことができます。
strip_tags()関数を使うと、HTMLタグを除去できます。