gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:18:25 24 4
gpt4 key购买 nike

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

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

据我所知,django 向用户传递一个 token (某种 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 token 并用它来欺骗我(或用户)。所以我对这个主题有一些疑问:

1)我上面的假设对吗?

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

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

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

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

最佳答案

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

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

由于 secret 嵌入到分配给该特定用户的响应文档中,攻击者需要窃听该特定响应或以其他方式访问该文档。肯定存在获取 CSRF token 的攻击(例如 eavesdroppingMITMXSS 等)。但如果您受到保护免受这些攻击,攻击者将无法伪造真实的请求。

关于django - 在什么情况下 CSRF 豁免会产生危险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9956356/

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