0

我正在测试将代码注入用户输入的字段,以防止 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>
4

2 回答 2

1

通过脱离上下文查看特定的代码,没有什么明显的。我们不知道这里分配了什么 $title 或 $descr。据我们所知,变量是使用strip_tagshtmlentities初始化的。

例如,对我来说,该输出看起来像是通过 strip_tags 运行的。

$title = strip_tags($_POST['title'])

<input type=text name='title' value= '<? echo $title ?>'" >   
于 2012-12-11T06:09:03.223 回答
0

不要在输入字段或文本区域中显示用户输入,浏览器不允许从该位置运行。接下来试试:

<div>
<? echo $descr ?>
</div>
于 2012-12-11T06:07:03.907 回答