问题标签 [csrf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
859 浏览

javascript - CSRF 漏洞/cookie 问题

只是想从知道的人那里得到意见。我正在考虑 CSRF 漏洞,以及我所知道的最流行的对抗它的方法。该方法是在返回的 html 中创建一个令牌,并添加一个具有相同值的 cookie。因此,如果脚本尝试发布帖子,他们会希望have to guess the token thats embedded in the web page它成功。

但是,如果他们针对的是特定网站,为什么他们不能只使用一个脚本

  1. 在页面上调用 get (即使脚本无法访问 cookie 也会返回)
  2. 解析 html 并获取令牌
  3. 调用包含该令牌的帖子(返回的 cookie 将被发回)
  4. 他们在用户不知情的情况下成功提交了表单

脚本不需要知道 cookie 的内容,它只是利用了 cookie 一直来回发送的事实。

我在这里想念什么?这不可能吗?如果你仔细想想,我认为这很可怕。

在此行下方不需要阅读即可回答问题:)

这个漏洞基于这样一个事实,即身份验证是基于 cookie 完成的,我认为这是当前进行身份验证的主要方式。

我能想到的另一个解决方案是在页面级别进行身份验证。因此,当他们登录时,返回的 html 中将包含该令牌。他们单击的每个链接都包含该令牌,因此当 Web 服务器收到请求时,它可以识别用户/会话。它的问题是,如果他们使用除此之外的任何导航,他们将是“未经身份验证”(例如输入 url),它在 url 中看起来也不好看,因为它可能看起来像这样:

https://www.example.com/SuperSecretPage/1/123j4123jh12pf12g3g4j2h3g4b2k3jh4h5g55j3h3

但我确实明白,如果安全更重要,那么漂亮的 URL 就排在第二位。

我对cookies一无所知,但是如果用户代理对他们的cookies更加小心怎么办?

例如,如果发送的 cookie 取决于选项卡怎么办?我们现在都使用标签冲浪,对吧?那么如果 cookie 的范围是选项卡呢?因此,如果我在选项卡 1 上打开了我的银行网站并且我在选项卡 2 上冲浪,则在选项卡 2 上调用获取/发布的任何脚本都只会发送在选项卡 2 中累积的 cookie。

或者如果cookies被存储/域。因此,当我在 example.com 上时,任何返回的 cookie 都会进入 example.com cookie 集合。然后当我在 www.mybankingsite.com 上时,所有的 cookie 都会被放入 mybankingsite.com 集合中。因此,如果我访问 example.com 并运行一个调用 get/post 的脚本,用户代理将只发送 example.com cookie。这与发送请求域的 cookie 不同。例如,如果脚本在 example.com 的网页中调用 mybankingsite.com 的获取,则用户代理将不会发送 mybankingsite.com cookie。

我知道我无法控制用户代理的工作,但我只是在探索可能性

0 投票
3 回答
5298 浏览

php - 如何为检查请求来源提供更多安全性

我正在开发一个 PHP Web 应用程序,我想为应用程序提供更高的安全性,以便没有人可以轻易破坏该功能。

关于我的问题的简要说明:在一个模块中,有一个阶段我正在检查请求的来源(该请求的来源)

目前,我正在使用HTTP_REFERRER变量(在 php 中可用)。我正在使用一个特定的 URL(例如http://www.example.com/test.php)检查这个变量值。如果存在完全匹配,那么只有我在呼吁采取进一步行动。

我对上述方法有点困惑,我应该使用 HTTP_REFERRER 还是检查 IP 地址(如果请求来自任何特定的 IP 地址,则为有效请求)?

我还想知道提供安全性的更好方法。

有没有人有想法然后请分享?

提前致谢

0 投票
1 回答
668 浏览

django - SWFUpload 与 Django 1.2 csrf 问题

我正在尝试使用 SWFUpload 将文件上传到 Django。使用 SWFUpload找到这篇文章Django 。但是发现了一个问题。在 Django 1.2 中,csrf 需要在每次提交表单时发送一个 csrf 令牌,并且它包括使用 SWFUpload 发送的文件。因此,在我关闭 csrf 之前上传不会(全局或使用 @csrf_exempt 装饰器查看)。有没有比关闭csrf更好的方法来处理这个问题?

我知道我可以使用 SWFUpload post_params: {"csrfmiddlewaretoken" : ""}, 传递自定义数据。但我不知道如何在模板中仅获取 csrf 令牌的值,而不是完整的输入标签。

0 投票
1 回答
704 浏览

ruby-on-rails - 禁用 cookie 时处理 CSRF 保护

如果不启用 cookie,表单帖子将抛出ActionController::InvalidAuthenticityToken. 在大多数情况下,我只是通过一条消息来处理异常,指出需要 cookie 才能登录我的应用程序。

但是,我的应用程序的用户可以做的一件事是创建要与其他人共享的内容,这些人可能登录也可能未登录(这不是必需的)。此外,如果创建者选择这样做,则此内容可以受密码保护。这是我遇到问题的地方。如果重要的话,我正在使用active_record_storeas my session_store,并且还config.action_controller.session设置了。

如果访问者在未启用 cookie 的情况下尝试解锁受密码保护的内容,应用程序将抛出异​​常,并从访问者的角度来看,崩溃。我希望能够处理这种情况,但我不知道该怎么做。我可以处理异常并允许在不检查 cookie 的情况下解锁内容,但如果我这样做,我可能不会保护针对 CSRF 的操作,因为无论如何我都会打开一个漏洞,对吗?或者,我可以要求启用 cookie 以便可以对表单进行身份验证,但在这种情况下确实没有理由需要 cookie。

如果我理解正确,如果我禁用该操作的保护,我只会将解锁受保护的内容暴露给 CSRF 漏洞,但如果无论如何都没有启用 cookie,这有关系吗?有没有办法在处理缺少 cookie 时进行保护?

0 投票
7 回答
22808 浏览

python - django中的csrf错误

我想为我的网站实现登录。我基本上将 Django Book 中的以下内容复制并粘贴在一起。但是,在提交我的注册表单时,我仍然收到错误消息(CSRF 验证失败。请求中止。)。有人能告诉我是什么引发了这个错误以及如何解决它吗?

这是我的代码:

视图.py:

注册.html:

0 投票
2 回答
6648 浏览

python - 为不总是有响应的视图禁用 Django CSRF

我有一个 Django 视图,它接收不需要 CSRF 令牌的 POST。因此我@csrf_exempt在视图上使用了装饰器。问题是有时我不会从视图中发出响应(它是一个 Twitter 机器人,它为每条推文接收一个 HTTP POST,我不想回复每条推文)。当我不发出响应时,我收到以下错误:

resp (我假设是响应)是 None 因为视图是用 just 退出的return。如何避免此错误并且在 POST 中仍然不需要 CSRF 令牌。

谢谢!

0 投票
3 回答
38101 浏览

django - 如何将 django csrf 令牌直接嵌入 HTML?

在我的 django 应用程序中,我将 html 字符串存储在数据库中,然后将其作为“消息”显示在用户的主页上。其中一些消息包含表单,但不是用模板语言编写的,我无法插入 csrf 令牌(从而破坏了应用程序)。

有没有办法直接从我正在编辑的 python 文件中插入这个令牌?我正在寻找类似的东西:

在类似情况下工作的任何其他解决方案都会很棒。谢谢

编辑: 实际上这行不通,因为每个会话的令牌都不同,因此将其存储在数据库中并不是很有用。有没有办法在视图中动态加载令牌?

0 投票
6 回答
7773 浏览

php - X-Requested-With 标头服务器检查是否足以防止 ajax 驱动的应用程序的 CSRF?

我正在开发一个完全由 ajax 驱动的应用程序,其中所有请求都通过基本上相当于一个主控制器的东西,它的基本结构看起来像这样:

这通常足以防止跨站点请求伪造吗?

当每个请求都没有刷新整个页面时,拥有一个旋转令牌是相当不方便的。

我想我可以通过每个请求将唯一令牌作为全局 javascript 变量传递和更新——但不知何故,这感觉很笨拙,而且无论如何似乎天生就不安全。

编辑 - 也许像用户的 UUID 这样的静态令牌总比没有好?

编辑#2 - 正如The Rook指出的那样,这可能是一个令人毛骨悚然的问题。我已经阅读了两种方式的猜测,并听到了关于旧版本的闪存可用于这种恶作剧的传言。由于我对此一无所知,因此我悬赏任何能够解释这是 CSRF 风险的人。否则,我会把它交给Artefacto。谢谢。

0 投票
1 回答
93 浏览

javascript - CSRF 攻击是否可以通过任何直接方式访问或操纵其目标站点的 javascript 变量?

如果 ajax 驱动的站点使用存储为 javascript 变量的唯一令牌并在每个请求中验证它以防止 CSRF,它是否会打开任何攻击向量——前提是该站点没有 XSS 漏洞?

0 投票
1 回答
1918 浏览

iis - ColdFusion - 预防 - 跨站点请求伪造 (CSRF)

我有兴趣了解如何在我的 ColdFusion 9 应用程序中防止跨站点请求伪造 (CSRF)。我在网上找到了一些教程,但似乎没有一个是全面的。我发现的最好的是:http ://www.mollerus.net/tom/blog/2009/01/an_easy_block_for_crosssite_request_forgeries_csrf.html 但这不是一个非常全面或清晰的例子。

任何可用于防止 CSRF 的教程、示例或指针?

谢谢!