我正在测试将代码注入用户输入的字段,以防止 XSS。
好的 - 更新:我在下面编写了可重现的代码。我输入以下注入,文本字段重定向,但 textarea 没有。我还可以看到,在我的原始表单上,由于回显后面的一些附加属性(例如 size="100px"),它不会重定向。但本质上它显示了漏洞。为什么不使用 textarea 字段?
输入字段:
<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>