プロが教えるわが家の防犯対策術!

お世話になっています。
今回セキュリティ講座を開くことになり、
XSSについて講義をすることになったのですがちょっと困っているので質問させてください。

PHPを使ってフォームに入力した文字列をそのまま出力する、
というWebアプリを作りたいのですが、
入力に
<script>alert("XSS");</script>
と入力してもアラートが表示されません。
PHPによって生成されたソースを見てみると、
<script>alert(\"XSS");</script>
と¥でエスケープされていました。

受講者に実際にjavascriptが動いてしまうということを実践させたいので、
なんとかalertを動かす方法は無いのでしょうか?
よろしくお願いします。
(厳密にはXSSではなくスクリプトインサーションですが^^;)

以下、ソースコードです。(BODY部分のみ抜粋)

<form action="test3.php" method="post">
入力<input type="text" name="str"><br>
<input type="submit" name="submit" value="表示"><br>

<?php
if($_POST['submit']) {
$string = $_POST['str'];
echo $string;
}
?>


実行環境:
windows XP
wwwサーバ:apache2.2
PHP5.2.8
ブラウザ:firefox3

A 回答 (1件)

回答になるかわかりませんが、どなたからもレスがつかないようなので。



・ブラウザをIEにする

FireFox3はセキュリティで制限されていたはず。
セキュリティレベルを変更すれば可能かもしれないが調べる気になりません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
IE7で試してみてもエスケープされてしまいました。

PHP側の問題かと思い調べたところ自己解決しましたので
後に参照する方のために解決方法を記載しておきます。

php.ini(C:\WINDOWS以下)を編集し、
magic_quotes_gpc = On になっている箇所を
magic_quotes_gpc = Off に変えるとエスケープされなくなりました。

お礼日時:2009/04/21 14:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!