今天遇到了一些代码,它有一个 javascript 数组,用 php 制作,只使用 php 的 addlashes() 来清理。起初我以为这是一个简单的 XSS 漏洞,但我一直没能看到它的缺陷。这是我正在谈论的一个例子:
foo.php
$itemList = "[";
foreach ($array as $item)
{
$itemList .= "'".addslashes($item)."',";
}
$itemList = "'']";
bar.html
<script>
var a = <?php echo $itemList; ?>
</script>
显然类似的东西']; alert("xss"); b=['
不会有效,因为它会变成\']; alert(\"xss\"); b=[\'
. 那么这真的安全吗,而且我的代码气味不存在?
`
`
编辑:
有人可以告诉我这怎么行吗?我知道这不是最佳实践,并且不会在我的代码中使用它,但是如果我想重写代码,我需要证明来说服其他人