在什么情况下 CSRF 豁免会产生危险?

2023-12-27

这个问题更像是一个再保险问题,而不是直接关于如何编码的问题。作为一名自学者,我没有太多机会向专业人士询问此类问题,所以我在这里尝试。

我已阅读 django-docs 中的文档(https://docs.djangoproject.com/en/1.3/ref/contrib/csrf/ https://docs.djangoproject.com/en/1.3/ref/contrib/csrf/)以及该页面上的一些信息:http://cwe.mitre.org/top25/#CWE-352 http://cwe.mitre.org/top25/#CWE-352

据我所知,django 向用户传递一个令牌(某种 pin 码)。为了验证它确实是他,他必须在下次请求时返回它。 Google 的一些人发现这甚至可以通过 ajax 请求实现,这就是为什么我们从 1.2.6 开始也制定了保护它们的新政策。 CSRF 是指有人冒充别人给我一些东西(糟糕的、危险的代码、损坏的文件或类似的东西)。

所以如果我有这样的代码:

@csrf_exempt    
def grab(request):
    """
    view to download an item
    POST because it stores that a user has downloaded this item
    """
    item_id = request.POST.get('item', None)
    if not loop: return HttpResponseBadRequest('no item id provided')
    item = Item.objects.get(pk=int(item_id))

应该保存它,因为在尝试将给定值转换为整数之前,我不会授予对数据库或应用程序任何部分的访问权限。如果我错误地记录了某人下载文件的情况,也不会造成太大的损害(在这种情况下几乎没有)。假设我会根据这个观点撰写法案,那么 CSRF 豁免将是一个很糟糕的主意(对吗?)。

我也不明白为什么有人不能从用户那里窃取 CSRF 令牌并用它来欺骗我(或用户)。所以我对这个话题有一些疑问:

1)我上面的假设对吗?

2)有人可以告诉我,一些不太好的人可以使用上面的视图来做什么(以及如何)做肮脏的把戏,他们会是什么?

3) CSRF 是中间人攻击的一个例子吗?它只是与之相关,还是完全不同?

4)有任何有价值的链接可以进一步阅读此类危险吗?

也许其中一些问题听起来不太灵通,但我正在努力克服这个问题。如果有人能帮助我,我会很高兴。


CSRF 攻击 https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)是关于强迫受害者浏览器发送伪造的请求。一个简单的<img>或自动提交<form>对于 GET 和 POST 方法执行此操作就足够了。当浏览器发送请求时,它会同时发送任何身份验证凭据,从而使请求从服务器的角度看来是真实且合法的,因为它们基本上与用户操作发起的请求没有什么不同。

这正是 CSRF 令牌的用途:区分用户发起的请求和第三方站点伪造的请求。为此,CSRF 令牌充当只有服务器和用户知道的秘密。服务器将机密放入响应中的文档中,并期望在下一个请求中将其发回。

由于秘密嵌入到分配给该特定用户的响应文档中,攻击者需要窃听该特定响应或以其他方式访问该文档。肯定存在获取 CSRF 令牌的攻击(例如窃听 https://www.owasp.org/index.php/Network_Eavesdropping, MITM https://www.owasp.org/index.php/Man-in-the-middle_attack, XSS https://www.owasp.org/index.php/Cross-site_Scripting_(XSS), ETC。)。但如果您受到保护免受这些攻击,攻击者将无法伪造真实的请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在什么情况下 CSRF 豁免会产生危险? 的相关文章

随机推荐

  • Python 'sys.argv' 的最大参数数量有限制吗?

    我有一个Python脚本需要处理大量文件 为了解决 Linux 对可传递给命令的参数数量相对较小的限制 我使用find print0 with xargs 0 我知道另一种选择是使用 Python 的 glob 模块 但是当我有更高级的模块
  • 在 Android 中使用 Retrofit 时带有动态键的 JSON

    我是新使用的Retrofit与安卓 我陷入了向REST Api并且响应有一个动态键 谁能告诉我解析的最佳方法是什么JSON像这样的东西 Meta Data 1 Information Intraday 1min prices and vol
  • 对 Access 中的(隐藏)系统表运行 C# 查询?

    我正在尝试使用 C 对 Access 2007 数据库运行以下查询 OleDbCommand command new OleDbCommand command Connection connect command CommandText S
  • 没有数据源时如何给出“Empty ListView Message”

    我的应用程序有一个带有 GridLayout 的 ListView 我现在尝试将 ListView 组引入我的应用程序 比如说 数据源通常有 Group1 Group2 和 Group3 我想一直显示所有 3 个组 无论其中是否有元素 当组
  • Julia 的 numpy.einsum 吗? (2)

    从此而来question https stackoverflow com questions 22521574 numpy einsum for julia 我想知道是否可能有更广义的 einsum 让我们假设 我遇到了问题 using P
  • 为什么需要在菱形层次结构的中间指定虚拟继承?

    我有钻石级的类 A B C D 为了避免 D 中存在 A 的两个副本 我们需要在 B 和 C 处使用虚拟继承 class A class B virtual public A class C virtual public A class D
  • Java 网络开发 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望开始使用 Java 进行 Web 开发 我有一些基本的 Java 知识 所以这不是问题 但当涉及到破译 Web 应用程序中使用的各种
  • Django防止删除模型实例

    我有一个 models Model 子类 它代表我的 mysql 数据库上的视图 即 Managed False 然而 当运行我的单元测试时 我得到 DatabaseError 1288 DELETE 的目标表 my view table
  • CORS 不适用于 WSO2 API 管理器中的 oAuth2 UserInfo 端点

    我在使 CORS 在 oAuth2 的 UserInfo 端点上工作时遇到问题 我想通过调用 oAuth2 UserInfo 资源来检索声明 UserInfo 正如我从 stackoverflow 帖子中了解到的那样 WSO2 API 管理
  • 服务工作者抛出 net::ERR_FILE_EXISTS 错误?

    service worker js 1 GET http localhost 8080 service worker js net ERR FILE EXISTS 这是注册服务人员后每次刷新时都会出现的错误 我已确保 service wor
  • python-requests 在收到 HTTP 302 时将 POST 更改为 GET。这是预期的行为吗?

    我在对新 API 进行一些测试后发现了这一点 并且那边的管理员说我一边做 GET 一边做 POST 启用调试后 我发现请求将执行初始 POST 然后对新的 302 URL 执行 GET 在我了解问题所在后 我的问题现已解决 但这是错误还是预
  • 如何在服务器上自动将LESS编译成CSS?

    我的朋友设计师花费了大量宝贵的时间手动编译他的 LESS 文件并使用 Coda 远程站点 上传 他问我 是否可以自动检测Linux服务器上的文件更改并完全无延迟地进行编译 我已经制作了一个脚本并发布了详细信息 易于设计师使用 文件保存后立即
  • 使用 .NET CodeDom 代码生成时如何自定义自动生成的注释?

    我在用着CodeCompileUnit and CSharpCodeProvider生成一些源代码 它将下面的标头添加到所有生成的代码中 有没有办法自定义评论 让它说些别的东西
  • 如何将 Android Studio 安装到 IntelliJ 中?

    现在 Android Studio 已经发布了 是否可以将其安装到 IntelliJ Ultimate 中 我打开了 首选项 gt 插件 屏幕 这是我所看到的 我根本不记得安装过 Android 支持 此外 当我打开首选项面板时 所有插件都
  • 模拟/测试 Mongodb 数据库 Node.js

    我正在学习nodejs 并且我有一个必须与之交互的mongodb 数据库 我目前正在考虑使用 mocha 作为单元测试框架 使用 Zombie js 作为验收测试框架 我想知道如何对 mongodb 数据库进行全面的验收测试 是否有一个框架
  • 我可以在没有 Commons-logging.jar 的情况下使用 Apache HTTPClient

    我正在尝试使用Apache HTTPClient在我的项目中 这里不需要此应用程序的任何日志记录 那么我可以使用HTTPClient没有Commons logging jar 否则对于我的发行包来说将会是额外不必要的负担 是的你可以 正如
  • 选择列中具有第二高值的行[重复]

    这个问题在这里已经有答案了 假设我有一个类似于以下的表 Item Description Time ItemA1 descript 08 16 2013 00 00 00 ItemA2 descript 08 16 2013 00 00 0
  • 检查多个文本字段是否为空 - iOS with Swift

    因此 我正在开发一个应用程序注册屏幕 我试图检查注册屏幕上的每个字段 看看它是否为空 如果是 则在标签中向用户显示错误消息 我一直在使用一系列 else ifs if self firstNameField text isEmpty nil
  • 共享工具提示的 Highcharts 工具提示格式

    例如 如果我有一个包含三个系列的图表 并且工具提示设置为共享 我希望对工具提示的格式设置有更多的控制 目前 我使用格式化程序 somefunction 并创建我自己的 html 以在显示的工具提示中使用 现在这工作得很好 但现在我希望能够知
  • 在什么情况下 CSRF 豁免会产生危险?

    这个问题更像是一个再保险问题 而不是直接关于如何编码的问题 作为一名自学者 我没有太多机会向专业人士询问此类问题 所以我在这里尝试 我已阅读 django docs 中的文档 https docs djangoproject com en