Joe*_*ssi 4 javascript php arrays xss
今天看到一些代码有一个javascript数组,用php制作,只使用php的addslashes()进行清理.起初我认为这是一个简单的XSS漏洞,但我还没有看到它的缺陷.这是我正在谈论的一个例子:
foo.php
$itemList = "[";
foreach ($array as $item)
{
$itemList .= "'".addslashes($item)."',";
}
$itemList = "'']";
Run Code Online (Sandbox Code Playgroud)
一个bar.html
<script>
var a = <?php echo $itemList; ?>
</script>
Run Code Online (Sandbox Code Playgroud)
显然,类似的东西']; alert("xss"); b=['不会有效,因为它会变成\']; alert(\"xss\"); b=[\'.那么这是非常安全的,我的代码味道是不存在的吗?
`
`
编辑:
有人能告诉我这是怎么回事吗?我知道这不是最佳实践,并且不会在我的代码中使用它,但如果我想重写代码,我需要证明来说服其他人
不,不,不,不,不.
使用正确的功能来完成正确的工作.
addslashes是不是任何情况下的逃生功能,它只是增加了斜线.
如果您要打印到HTML使用htmlentities(或htmlspecialchars适用).
如果您要打印到JavaScript使用json_encode.
如果您正在构建MySQL查询使用 mysql_real_escape_string
等等
使用addslashes而不是滥用的机会json_encode是例如字符串: "</script><iframe src=hxxp://phising.mywebsite.com>"
这将结束脚本并从不可靠且可能有害的域中插入iframe.
| 归档时间: |
|
| 查看次数: |
750 次 |
| 最近记录: |