gpt4 book ai didi

javascript - 为什么使用 POST 方法可以防止 json 劫持?

转载 作者:行者123 更新时间:2023-12-01 15:05:55 26 4
gpt4 key购买 nike

在返回 json 时,我遇到了以下 ASP.NET MVC 错误。在 Get方法:

This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet.



显然这个漏洞被称为 json劫持 . This article解释返回 json 时网站可能被利用使用 Get .但返回 jsonPost方法是安全的。

为什么要改变 GetPost防止这种攻击?

最佳答案

看到这么多人试图证明,我真的很惊讶。 JSON 劫持 仍然是一个安全问题。 (当然,如果您仍然使用 Firefox 2、Opera 9 或 Safari 3)。很长一段时间以来,现代浏览器都没有这个问题。您在问题中提到的文章是2009年写的,您可以查看post有关如何解决问题的更多信息。而且您无需担心JsonRequestBehavior只允许获取和忘记。

更新

抱歉,我还没有阅读赏金问题。为什么更改发布请求可以防止 json 劫持?

你可以找到一篇文章here ,它描述了 JSON 劫持攻击步骤。它如下:

  • 第一步 :让经过身份验证的用户访问恶意页面。
  • 第二步 :恶意页面将尝试访问用户登录的应用程序中的敏感数据。这可以通过在 HTML 页面中嵌入脚本标签来完成 因为同源策略不适用于脚本标签 .
    <script src="http://<jsonsite>/json_server.php"></script>
    浏览器将向 json_server.php 发出 GET 请求,并且用户的任何身份验证 cookie 将与请求一起发送。

    ...

  • 你可以这样想这个场景,用户访问 www.yoursite.com并获得认证。在该用户离开您的站点并转到恶意站点之后。如果恶意网站有 <script src="http://www.yoursite.com/some_endpoint"></script>标签,浏览器将发出 GET 请求。如果返回的数据是 JSON,则站点可以通过对象原型(prototype) setter 获取敏感数据。 (请记住,攻击者会尝试使用 SCRIPT 标签而不是 AJAX 请求,因为同源策略不适用于脚本标签。请参阅 Cross-origin network access 规则。)

    但是如果你改变 http://www.yoursite.com/some_endpoint 的请求类型来自 GETPOST ,当浏览器尝试访问它时,您的服务器将拒绝它。

    我还要离开一本旧的 MVC 框架书 here这解释了概念。

    关于javascript - 为什么使用 POST 方法可以防止 json 劫持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62033371/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com