我得到那个
JSON.parse()阻止攻击者注入
JavaScript到响应,因为JSON解析器只是一个文本解析器,而不是一个脚本解析器,所以请不要关闭这是所有其他问题的谈话.这是一个不同的问题.
如果攻击者可以劫持您的Ajax调用,并将JavaScript放入Ajax调用中,那么它们并不只是可能劫持您的实际网页并将任意JavaScript放入您的页面,从而可以完成相同的攻击?
当然,通过使用JSON.parse()而不是eval(),你没有什么可失去的(除非你的环境中没有JSON解析器,并且必须添加更多的代码才能获得),但是真正的情况呢如果您的网页由与您的ajax通话相同的主机提供服务,请添加安全性?
解决方法
是的,这真的比较安全.您不采取的一切预防措施都是一套潜在的漏洞,您不能防止.
攻击者可能能够对服务器的输出进行一些控制,而无需完全更改.没有人建议这是一个神奇的子弹,但它可能更快,你不会创造一个潜在的漏洞,可以回来并伤害你.
也许有人在运行你的服务器有一个糟糕的一天,并做一些愚蠢像构建JSON通过连接未经过化身的用户输入:
<?PHP
print '{"foo": ' . $_GET['bar'] . '}';
?>
如果您使用JSON.parse,那么他们可以做的最糟糕的事情就是将大量的对象拖入你的内存.如果你使用eval,他们可以劫持所有的东西.