Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在asp.net Web服务响应中,{quot;d:“}是什么意思_.net_Asp.net_Web Services - Fatal编程技术网

在asp.net Web服务响应中,{quot;d:“}是什么意思

在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服务端点实际上将

我创建了一个简单的C#asp.net web服务函数,它返回一条字符串消息
我使用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;