対策:
クロス・サイト・スクリプティングの対策は、Javascript を動かなくすることです。
画面にデータを出力する際に、htmlspecialchars() 関数を使用し、Javascript用の文字をHTMLエンティティーに変換します。
HTMLエンティティ―の例:
< ⇒ <
“ ⇒ &q u o t; に変換する。
1.htmlspecialchars()関数を使用して、15_1.phpを下記のように書き換えてください。
(15_1a.php)
HTMLファイルも書き換える必要があります。(15_1a.html)
<?php
$kiji = $_POST['kiji'];
$kiji = htmlspecialchars($kiji, ENT_QUOTES, "UTF-8");
echo "記事: ". $kiji;
?>
※ENT_QUOTES を指定すると、' (シングルクオート) が '''になります。
2.下記文字列を入力します。(前回と同じ文字列です。)
<script>alert(“不正な実行!")</script>
3.画面に下記文字列が表示され、警告は表示されません。
画面表示
記事: <script>alert(“不正な実行!")</script>
スクリプト文が見えますが、画面にスクリプト文が表示されているのであって、プログラムが実行された訳ではありません。
4.ブラウザのソースファイルを確認します。
ソース: (ブラウザーの「ページ」 > ソースの表示)または(表示 > ソース)
画面表示
記事: [removed]alert("不正な実行!")[removed]
※ <、 >、 “ 等の文字が変換されているのがわかります。