在asp.net Web服务响应中,{quot;d:“}是什么意思
我创建了一个简单的C#asp.net web服务函数,它返回一条字符串消息在asp.net Web服务响应中,{quot;d:“}是什么意思,.net,asp.net,web-services,.net,Asp.net,Web Services,我创建了一个简单的C#asp.net web服务函数,它返回一条字符串消息 我使用jQueryAjax从页面调用它 C#: JS: 我的问题是为什么alert(msg)不起作用它是一种安全强化机制 本质上,它有助于防止攻击者从受害者网站读取JavaScript数组(作为Json下载)的CSRF类型的攻击。他们可以通过重写JavaScript的数组类型来实现这一点d导致返回的Json不是数组,从而使数组重写对攻击者毫无用处 请参阅这篇伟大的博文: ASP.NET和WCF JSON服务端点实际上将
我使用jQueryAjax从页面调用它 C#:
JS:
我的问题是为什么
alert(msg)代码>不起作用它是一种安全强化机制
本质上,它有助于防止攻击者从受害者网站读取JavaScript数组(作为Json下载)的CSRF类型的攻击。他们可以通过重写JavaScript的数组类型来实现这一点d
导致返回的Json不是数组,从而使数组重写对攻击者毫无用处
请参阅这篇伟大的博文:
ASP.NET和WCF JSON服务端点实际上将其JSON封装在
具有“d”属性的对象,以规避微妙的电势
使用JSON时存在安全漏洞
Phil Haack关于此的帖子:
这是从ASP.NET3.5引入的。如果您希望msg
在3.5之前和之后的两种框架中都能工作,那么就试试这个小技巧
var data = msg.hasOwnProperty("d") ? msg.d : msg;
戴夫·沃德(Dave Ward):+1谢谢,这意味着仅针对“数组覆盖”问题,MS开发人员在所有nithin中添加了{d:}变量not。仔细阅读他的答案。“跨站点请求伪造攻击”还有一种方法可以使用此漏洞模拟XSS攻击。是的,基本上是我上面的答案。
$(document).ready(function() {
//alert("ready");
$.ajax({
type: "POST",
contentType: "application/json; chatset=utf-8",
url: "WebService2.asmx/HelloWorld",
data: "{}",
dataType: "json",
success: function(msg) {
//alert(msg); //doesnt works
alert(msg.d);
}
});
});
var data = msg.hasOwnProperty("d") ? msg.d : msg;