A. *_*ray 107 security asp.net-mvc json http-get http-post
每当我URL在浏览器的地址栏中测试一个新的时候,我都会遇到同样的错误returning Json:使用内置的MVC JsonResult helper:
此请求已被阻止,因为敏感信息可能会在第三方网站上使用时向第三方网站披露
GET request.允许GET requests,设置JsonRequestBehavior为AllowGet.
而不是咕噜咕噜地承认并解雇Fiddler做一个帖子请求,这一次,我想知道GET一个POST请求确实暴露了一个请求不是什么?
Old*_*ain 106
在您的退货中使用以下内容:
return this.Json("you result", JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)
Sil*_*Fox 78
假设您的网站有GetUser网络方法:
http://www.example.com/User/GetUser/32
它返回一个JSON响应:
{ "Name": "John Doe" }
Run Code Online (Sandbox Code Playgroud)
如果此方法仅接受POST请求,则只有在http://www.example.com/User/GetUser/32使用POST方法发出AJAX请求时,才会将内容返回给浏览器.请注意,除非您已实施CORS,否则浏览器将保护来自向您提出此请求的其他域的数据.
但是,如果您允许GET请求以及使用GET而不是POST发出类似于上述的AJAX请求,则恶意用户可以通过script在HTML中使用标记将JSON包含在其自己站点的上下文中.例如www.evil.com:
<script src="http://www.example.com/User/GetUser/32"></script>
Run Code Online (Sandbox Code Playgroud)
这个JavaScript应该没用,www.evil.com因为没有办法读取web方法返回的对象.但是,由于旧版浏览器(例如Firefox 3)中存在错误,因此可以重新定义JavaScript原型对象,从而可以www.evil.com读取方法返回的数据.这被称为JSON Hijacking.
有关防止这种情况的一些方法,请参阅此帖 但是,现代浏览器的更高版本(Firefox,Chrome,IE)不是已知问题.
Mur*_*san 55
默认情况下,ASP.NET MVC框架不允许您使用JSON有效负载响应GET请求,因为恶意用户有可能通过称为JSON Hijacking的进程获取对有效负载的访问权限.您不希望在GET请求中使用JSON返回敏感信息.
如果您需要发送JSON以响应GET,并且不暴露敏感数据,则可以通过将JsonRequestBehavior.AllowGet第二个参数传递给Json
方法来明确允许该行为.
阅读JSON HijackingPhil Haack
当我们想要从MVC应用程序返回一个json对象到客户端时,我们应该在返回一个对象时显式指定JsonRequestBehavior.AllowGet.结果,我返回如下的json数据来克服这个问题:
return Json(yourObjectData, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)
您必须使用JsonRequestBehavior.AllowGet进行Json Response,如下所示:
return Json(YourObject, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80394 次 |
| 最近记录: |