我知道 JSON.parse() 可以防止攻击者将 javascript 注入(inject)到响应中,因为 JSON 解析器只是一个文本解析器,而不是脚本解析器,所以请不要关闭这是所有其他问题的重复谈谈那个。这是一个不同的问题。
如果攻击者可以劫持您的 Ajax 调用并将 javascript 放入 Ajax 调用中,他们是否也有可能劫持您的实际网页并将任意 javascript 放入您的页面,从而完成完全相同的攻击?
当然,使用 JSON.parse() 而不是 eval() 不会有任何损失(除非您的环境中还没有 JSON 解析器并且必须添加更多代码才能获得),但是在什么情况下如果您的网页由与您的 ajax 调用相同的主机提供服务,它真的会增加安全性吗?
最佳答案
是的,确实更安全。 您没有采取的每一项预防措施都是您没有阻止的一系列潜在攻击。
攻击者可能能够对您服务器的输出进行一些控制,而无需完全更改它。没有人认为这是一颗 Elixir ,但它的速度可能更快,而且您不会造成可能再次伤害您的潜在漏洞。
也许运行你的服务器的人今天过得很糟糕,做了一些愚蠢的事情,比如通过连接未经处理的用户输入来构造 JSON:
<?php
print '{"foo": ' . $_GET['bar'] . '}';
?>
如果您正在使用 JSON.parse
,它们最糟糕的做法是将一个大对象插入您的内存中。如果您使用 eval
,它们可以劫持所有内容。
关于javascript - 当网页和 ajax 调用来自同一台服务器时,JSON.parse() 真的比 eval() 更安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6765106/