当前位置:  开发笔记 > 编程语言 > 正文

json asmx和那个讨厌的d:

如何解决《jsonasmx和那个讨厌的d:》经验,为你挑选了1个好方法。

我查看过很多帖子并且没有成功地确定如何摆脱来自我的asmx网络服务的响应中的麻烦,如{"d":{"Response":"OK","Auth -Key ":" JKPYZFZU"}}.

这是由我的类'public Dictionary UserDevice'通过返回Dictionary对象创建的.

如果该死的东西不能全部放入d物体,我会非常高兴!



1> Radu..:

基本上JSON数组表示法['hello']本身就是有效的JavaScript,而JSON对象表示法{'d': ['hello'] }本身并不是有效的JavaScript.这具有阵列符号可执行的结果,这开启了XSS攻击的可能性.默认情况下将数据包装在对象中有助于防止这种情况发生.

你可以阅读更多关于它的原因 由戴夫沃德发布.(编辑:正如@ user1334007所指出的,Chrome会将此网站标记为不安全)

Dave Reed对该文章的评论特别告知:

这是一个非常容易误解的安全功能之一.在您的示例中,保护并不是真的反对意外执行警报.虽然这是'd'的一个好处,但在评估JSON以将其转换为对象时,您仍然需要担心这一点.

它所做的是防止JSON响应因XSS攻击而被批量执行.在这种攻击中,攻击者可以插入一个调用JSON Web服务的脚本元素,甚至是一个不同域的脚本元素,因为脚本标记支持它.并且,因为它是一个脚本标签,如果响应看起来像javascript它将作为javascript执行.相同的XSS攻击可以重载对象或数组构造函数(以及其他可能性),从而可以从其他域访问该JSON数据.

要成功实现这一目标,您需要(1)xss易受攻击的站点(good.com) - 任何站点都可以,(2)JSON Web服务,在GET请求上返回所需的有效负载(例如bank.com/getaccounts), (3)一个邪恶的位置(evil.com),当人们访问good.com时,向您发送从bank.com捕获的数据,(4)刚好碰巧登录bank.com的一个不幸访问good.com的访问者使用相同的浏览器会话.

保护您的JSON服务不返回有效的javascript只是您可以做的一件事来防止这种情况.不允许GET是另一个(脚本标签总是做GET).需要某个HTTP标头是另一个(脚本标签不能设置自定义标头或值).ASP.NET AJAX中的Web服务堆栈完成了所有这些工作.任何创建自己的堆栈的人都应该小心谨慎.


具有讽刺意味的是,该网站已被Chrome标记为充满恶意软件.
推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有