`

JSON hijacking

    博客分类:
  • JSON
 
阅读更多

原创转载请注明出处:http://agilestyle.iteye.com/blog/2367009

 

Issue

JSON劫持利用一些浏览器的功能,允许脚本覆盖核心语言的对象setter的例程,它允许恶意JavaScript插入逻辑,使其监控服务器返回的JSON消息。

 

在一个JSON劫持攻击中,攻击者将覆盖的JavaScript数组传递给它的构造函数来窃取信息。攻击者然后嵌入域被劫持的JSON端点在HTML脚本标记。浏览器将把跨域资源作为一个JavaScript文件和试图呈现,导致调用数组构造函数的攻击者的版本,导致跨领域的信息暴露。

 

Solution

为了防止JSON劫持:

  • 使用application/json MIME类型返回json响应。(避免使用text/html)
  • 不要使用数组作为最高级别的JSON数据传输结构。使用JSON Object替代。例如,如果您需要返回[1,2,3,4,5],返回 '{"result":[1,2,3,4,5]}'
  • 如果你的客户端库允许它(例如Dojo),使用评论过滤JSON格式和使用mime类型text/json-comment-filtered。例如:[1,2,3,4,5] 的json返回被转换为 '/*[1,2,3,4,5]*/' 这种形式

Reference

http://cwe.mitre.org/data/definitions/352

https://dojotoolkit.org/reference-guide/1.10/dojo/contentHandlers.html

http://www.cnblogs.com/hyddd/archive/2009/07/02/1515768.htm

分享到:
评论

相关推荐

    Json反序列化

    3. 避免注入攻击:对用户提供的JSON数据进行反序列化时,需警惕潜在的注入攻击,如JSON Hijacking。 六、TestJson示例 在"TestJson"这个例子中,可能包含了一个或多个测试用例,用于检验JSON反序列化的正确性。这...

    json.js,json2.js 和 json.jar 下载

    4. **安全性**:在处理用户输入的JSON数据时,需要注意JSON Hijacking和JSON Padding攻击,因此,像`json2.js`这样的库可能会提供安全措施来防止这些攻击。 5. **性能优化**:在处理大量JSON数据时,选择合适的库和...

    详解JSON和JSONP劫持以及解决方法

    首先,了解JSON劫持,也就是JSON Hijacking。这种攻击方式类似于CSRF(跨站请求伪造),但其目的在于获取敏感数据。在JSON劫持中,攻击者利用浏览器中script标签的特性来执行恶意脚本,并从已经登录的用户浏览器中...

    json 解析所依赖的jar包

    9. **安全注意事项**:在使用JSON时,要注意防止JSON Hijacking和JSON Injection攻击,可以通过设置合适的HTTP头或使用JSONP(JSON with Padding)等方式增强安全性。 10. **测试与调试**:使用Postman等工具可以...

    json处理总结.zip

    在处理用户输入的JSON时,要防止JSON Hijacking和JSON Injection攻击,确保数据的安全性。 在实际开发中,理解并熟练运用这些JSON处理技术,可以帮助我们更高效地构建和维护Web服务。选择合适的库取决于项目需求,...

    整合JSON的SSM框架项目

    在实际开发中,我们还需要关注JSON安全问题,如JSON Hijacking和JSON Padding攻击,以及性能优化,例如启用GZIP压缩来减少网络传输的数据量。同时,对于前端,可能需要引入如jQuery或Vue.js等库来方便地处理接收到的...

    json+struts2的jar

    8. **安全性考虑**:在使用JSON和Struts2交互时,需要注意防止JSON Hijacking和JSON Injection攻击。可以通过设置HTTP响应头中的`X-XSS-Protection`和`Content-Type`来增强安全性。 9. **性能优化**:在大型项目中...

    JSON.js

    JSON.js库可能会对JSON.parse()进行一定程度的安全优化,防止JSON Hijacking(JSON劫持)攻击。这种攻击方式利用了浏览器对JSON的自动执行特性,可能导致恶意代码被执行。 6. 性能:在大量处理JSON数据时,性能是个...

    jquery.json-2.3.js

    它包含了对JSON.parse()的封装,以防止JSON Hijacking攻击。这种攻击方式利用了某些浏览器允许跨域访问JSON数据的漏洞,但通过jQuery的处理,可以有效地避免这种风险。 总的来说,"jquery.json-2.3.js"为开发者提供...

    jQuery对后台json的解析

    在处理JSON数据时,还需要注意JSON的两个主要安全问题:JSON Hijacking 和 JSON Padding (XSS)。为了防止这些问题,服务器可能会在返回的JSON数据前添加一些不可执行的字符,例如`'[[Prototype]]'`。jQuery能够处理...

    ajax返回json对象.zip

    - **JSON Hijacking**:需要注意防止JSON响应被恶意脚本利用。 - **JSONP的安全性**:由于JSONP基于脚本注入,存在一定的安全隐患。 - **CORS策略**:正确配置CORS策略以确保跨域请求的安全。 8. **错误处理**:...

    SSH框架加Json数据类型整合Jar包

    - JSON Hijacking防护:Struts2插件通常有防止JSON Hijacking的措施,如添加时间戳或随机数防止恶意利用。 - JSONP支持:如果需要跨域请求,可以使用JSONP(JSON with Padding)方式,Struts2和Spring MVC都有相应...

    我的关于JSON例子

    1. **JSON Hijacking** - JSON Hijacking是指攻击者通过注入脚本,利用浏览器自动执行返回的JSON数据,从而执行恶意代码。为防止这种情况,开发者通常会在返回的JSON数据前添加非JSON字符,破坏其格式。 2. **JSONP ...

    json_demo.zip

    例如,JSON Hijacking(JSON劫持)是一种攻击方式,通过注入恶意脚本来获取JSON数据。因此,开发者应避免在不受信任的环境中暴露敏感的JSON数据。 8. JSON-LD与Linked Data: JSON-LD(JSON for Linking Data)是...

    json使用解读.rar

    3. **JSON安全问题**:在进行JSON解析时,需要警惕JSON Hijacking和JSON Injection攻击。为了防止Hijacking,可以采用JSONP(JSON with Padding)或者设置HTTP响应头`Content-Type`为`application/json; charset=utf...

    struts2-json-plugin-2.1.8.zip_Java 8_json-plugin-2.1.8

    6. **安全性**:该插件可能包含对JSON Hijacking和JSON Padding攻击的防护措施,确保数据传输的安全。 7. **兼容性**:与Java 8兼容,这意味着它可以利用Java 8的新特性,如日期时间API,流API等,来更好地与JSON...

    json使用大全json使用大全json使用大全json使用大全json使用大全json使用大全json使用大全json使用大全

    - JSON Hijacking:恶意脚本通过`<script>`标签加载JSON数据,从而执行恶意代码。为防止这种情况,通常会在响应头中设置`Content-Type`为`application/json;charset=utf-8`,禁止浏览器自动执行。 - JSON ...

    JSON 教程导读.pdf

    - **JSON Hijacking**:通过修改 JSON 请求中的关键字段来改变请求行为的安全问题。 - **最佳实践**: - 对所有外部输入的数据进行验证。 - 使用安全的编码和转义机制。 - 遵循最小权限原则,只暴露必要的数据。 ...

    公司AJAX JSON内部教程

    - JSON Hijacking:防止恶意代码通过JSON数据控制页面,应避免在响应头中设置`Cache-Control: max-age`,并使用HTTPS提高安全性。 8. **最佳实践** - 数据最小化:只传输必要的数据,减少网络传输时间。 - 格式...

    详解JSON和JSONP劫持以及解决方法.docx

    JSON劫持,也称为JSON Hijacking,是一种攻击方式,攻击者可以通过在目标服务器上发送恶意请求,获取敏感数据。这种攻击方式类似于CSRF攻击,但JSON劫持的目的是获取敏感数据,而不是只是发送恶意请求。 在JSON劫持...

Global site tag (gtag.js) - Google Analytics