[英]Windows phone emulator not showing security warnings from cross domain webservice requests
[英]Security issue with WebService [Get] Requests?
在阅读了有关试图解释为什么asmxs
不应该允许获取请求的着名(且唯一)的文章 ,所以我们不应该使用: [ScriptMethod(UseHttpGet = true)]
,我仍然有一个问题:
为什么?
Web服务,因为它的名字是服务,他不会想要关心它是GET还是POST:
即使一个人做了CSRF:就像嵌入他的恶意网站一样:
<script type="text/javascript" src="http://contoso.com/StockService/Stock.asmx/GetQuotes?symbol=msft" />
所以呢 ?
通过asmx POV - 这只是一个普通的请求。
有人可以通过示例找到我的问题吗?
新浏览器解决了许多问题。 此链接显示了一些应在新浏览器中测试的其他方法。
本文简要介绍了JSON劫持。
假设您有一个Web服务,它向当前经过身份验证的用户返回信用卡号列表:
[{"id":"1001","ccnum":"4111111111111111","balance":"2345.15"},
{"id":"1002","ccnum":"5555555555554444","balance":"10345.00"},
{"id":"1003","ccnum":"5105105105105100","balance":"6250.50"}]
以下是攻击的执行方式:
获取经过身份验证的用户访问恶意页面。
恶意页面将尝试从用户登录的应用程序访问敏感数据。 这可以通过在HTML页面中嵌入脚本标记来完成,因为同源策略不适用于脚本标记。 <script src="http://<json site>/json_server.php"></script>
。 浏览器将向json_server.php
发出GET请求,并且该用户的任何身份验证cookie都将与请求一起发送。
此时恶意站点已执行该脚本,它无法访问任何敏感数据。 通过使用对象原型设置器可以实现对数据的访问。 在下面的代码中,当尝试设置"ccnum"
属性时,对象prototypes属性被绑定到定义的函数。
Object.prototype.__defineSetter__('ccnum',function(obj) { secrets = secrets.concat(" ", obj); });
此时的恶意网站已经成功劫持了敏感的财务数据( ccnum
由返回) json_server.php
。
还有其他形式的JSON劫持技术,它们不依赖于__defineSetter__
函数的浏览器支持。 这只是进行攻击的一种方法,但本文中描述了许多其他方法,例如Array constructor clobbering
, UTF-7
, ES5 functionality
。
因此,在ASP.NET中默认禁用返回JSON的GET请求。
好吧,如果你按照你提供的那篇文章进行链接,可以在这里找到: http : //ajax.asp.net/docs/overview/AsynchronousLayerOverview.aspx ,你可以继续阅读,这是它的唯一原因指定是这样的:
对于修改服务器上的数据或公开关键信息的方法调用,不建议使用GET请求。 在GET请求中,消息由浏览器编码到URL中,因此更容易被篡改。 对于GET和POST请求,您应遵循安全准则来保护敏感数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.