安全性和跨域与ASP.NET MVC JsonResult和jQuery
-
19-08-2019 - |
题
我使用asp.net MVC开发将有Ajax交互的应用程序。我在控制器JsonResult方法返回我JSON序列数据。因此,例如,当一个请求到 http://somesite.com/findwidgets/ MVC制成将数据串行化为JSON并将其发送回。
我使用jQuery在客户端来处理Ajax请求,并然后操纵的结果。我没有任何麻烦的数据,但我发现,我可以请求 http://somesite.com/从浏览器的地址栏中findwidgets / ,它将返回JSON数据的下载。
另外,如何确保其他人不能简单地让使用要求和获取数据 http://somesite.com/ findwidgets / ?
这是跨域的权利或主题是讲其他安全问题?
由于
解决方案
另外,如何确保其他人 不能简单地发出请求和抢 使用数据 http://somesite.com/findwidgets/ ?
您所描述的问题是同一个人是指想了解如何能阻止人们从另一个网站上张贴自己的形式时。我看到的唯一合理的答案是使用某种类型的,其中一个键被用于每个请求和后续请求必须通过进行验证先前生成的密钥生成的会话密钥的系统。与无键或无效键到达的请求被拒绝访问。
我发现我可以使请求 到 http://somesite.com/findwidgets/ 从浏览器的地址栏 它将返回JSON数据作为 下载。
这是因为JSON不被识别为文本mime类型和浏览器将仅在浏览器中直接显示文本的MIME类型。还有什么将作为一个下载,而不是内嵌显示。
其他提示
考虑检查请求主机也和其限制于当前域。
您也可以使用控制器的IsAjaxRequest()属性(如果它假 - 例如返回null结果)。为了防止发布/获取来自其他网站的数据,您可以检查Request.UrlReferrer属性(但浏览器可以撒谎)。