<script>alert("これが穴だ!");</script>送信すると、画面にアラートウインドウが現れます。入力フィールドに書いたJavaScriptのスクリプトが、ページを読み込む際に実行されたためにこういう現象が起こっているのです。なぜこれが「穴」なのか? それは、「どこの誰かわからない人間が、ここにJavaScriptのスクリプトを書いて、ページを表示した際にそれを実行させてしまうことができる」からです。<?phpこの「htmlspecialchars」という関数は、その後の()に書かれた値(引数といいます)をチェックし、HTMLのタグをすべてエスケープ文字に変換したものを返します。つまり、このようにして値を書き出すことで、<script>タグなどをすべて無効化し、働かなくすることができるのです。
echo htmlspecialchars($result);
?>
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
<?php
$str =$_POST['text1'];
if ($str != null){
$result = "あなたは、「{$str}」と書きました。";
} else {
$result = "なにか書いてください。";
}
?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8" />
<title>sample page</title>
</head>
<body>
<h1>Hello PHP!</h1>
<div><?php
echo htmlspecialchars($result);
?></div>
<form method="post" action="./index.php">
<input type="text" name="text1">
<input type="submit">
</form>
</body>
</html>
| << 前へ | 次へ >> |