XSS を防止する目的で、ユーザー入力フィールドにコードを挿入するテストを行っています。
OK - 更新: 再現可能な以下のコードを書きました。次のインジェクションを入力すると、テキスト フィールドはリダイレクトされますが、テキストエリアはリダイレクトされません。また、元のフォームでは、エコーに続くいくつかの追加属性 (size="100px" など) が原因でリダイレクトされないこともわかります。しかし本質的に、それは脆弱性を示しています。テキストエリアフィールドを使用しないのはなぜですか?
フィールドへの入力:
<script type='text/javascript'>
window.location = 'http://www.example.com/'
</script>'";
コード:
<?
$descr='';
$title='';
if (isset($_POST['descr'])){
$descr = $_POST['descr'];
}
if (isset($_POST['title'])){
$title = $_POST['title'];
}
?>
<form method=post action=<? echo $_SERVER['PHP_SELF']?> enctype='multipart/form-data'>
Title: <input type="text" name='title'><? echo $title ?></input>
Description: <textarea name='descr'><? echo $descr ?></textarea>
<input type=submit name='save' value='Save Post'>
</form>