1
4034
它防止 JSON hijacking ,一个主要的json安全问题 fixed 在所有主要浏览器中 since 2011 使用ecmascript 5。
假想的例子:假设google有一个类似于
这个
这并不能解决 cross-site request forgery . |
2
505
它防止通过json劫持来泄漏响应。 理论上,http响应的内容受同源策略保护:来自一个域的页面无法从另一个域的页面获取任何信息(除非明确允许)。
攻击者可以代表您请求其他域上的页面,例如使用
因此,如果你访问攻击者的页面,它无法从gmail.com读取你的电子邮件。 除了使用脚本标记请求json内容时,json在攻击者控制的环境中作为javascript执行。如果攻击者可以替换数组或对象构造函数或在对象构造期间使用的其他方法,则json中的任何内容都将通过攻击者的代码并被公开。 注意,这发生在json作为javascript执行时,而不是在解析时。 有多种对策: 确保json永远不会执行
放置一个
只有一个合法的页面才能得到全部内容,去掉
诸如此类
确保json不是有效的javascript
类似地,在json之前添加无效的标记,比如
始终返回外部带有对象的json
这是
与前面的反措施类似,它确保json永远不会作为javascript执行。 一个有效的json对象,如果没有被任何东西包围,则在javascript中无效:
但这是有效的json:
因此,确保始终在响应的顶层返回一个对象,确保json不是有效的javascript,同时仍然是有效的json。
正如@hvd在注释中指出的,空对象
上述方法的比较owasp方式不需要修改客户机库,也不需要传输有效的json,因此侵入性较小。不过,目前还不确定过去或未来的浏览器漏洞是否能战胜这一点。正如@oriadam所指出的,不清楚数据是否可以通过错误处理在解析错误中泄漏(例如window.onerror)。 google的方法需要客户端库来支持自动反序列化,并且可以考虑在浏览器错误方面更安全。 这两种方法都需要服务器端更改,以避免开发人员意外发送易受攻击的json。 |
3
352
这是为了确保一些其他网站不会做恶作剧试图窃取你的数据。例如,通过
replacing the array constructor
,然后通过
另一方面,使用xhr和单独的json解析器的同一个站点请求很容易忽略
|
4
102
这将使第三方难以将json响应插入到具有
|
5
69
它防止它被用作
编辑
-注意评论(和其他答案)。这个问题与被破坏的内置设施有关,特别是
|
6
7
自从
|
Farid · 限制django每个客户的访问 2 年前 |
josegp · 在Nmap中-p-tag是什么意思 2 年前 |
kramer65 · 如何根据网站用户在S3上添加非公共网站文件? 6 年前 |
derf26 · 如何阻止React Web包包含包中的脚本。json 6 年前 |
user8663960 · 最好也是最简单的方法是保护登录表单的安全 6 年前 |