问题标签 [csrf-protection]

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 投票
2 回答
1930 浏览

django - 在不需要身份验证的页面中包含“CSRF 令牌”是否存在安全风险?

我有一个 Django 站点,它使用 Django 的 csrf-token 来防止 csrf 攻击。公众可以访问其中一种表格,包括未登录的人。

Csrf Token 应该提供对跨域请求的保护。

编辑:(引用我的评论)“但是,如果在不需要授权的情况下允许发布请求,csrf 并不比一个琐碎的垃圾邮件过滤器更好(验证码在这里会做得更好)。事实上,这应该是一个安全风险在不需要身份验证的页面中包含 CSRF 令牌(例如 30 分钟后过期)。(但我的网站正在这样做,这就是我首先发表这篇文章的原因)”

此外,在这种情况下,可以在浏览器 js 控制台中获取该页面,通过某些特定的 xpath 获取 csrf 令牌,然后使用该 csrf 发布一些任意数据。此外,步骤很容易重现,可以为该站点或任何 Django 站点设计特定的攻击,因为您每次都会找到除“csrfmiddlewaretoken”之外的 csrf 令牌(包括 reddit、pinterest 等网站)。

据我所知,除了让它有点困难之外,csrf 令牌并没有太大帮助。

我错过了它的一个方面吗?我的实施错了吗?如果我是对的,让你的 csrf 令牌在你的 html 源代码中飞来飞去(尤其是那些不需要任何身份验证的)是愚蠢的吗?

0 投票
1 回答
3356 浏览

oauth-2.0 - 为什么 OAuth 是一种可行的技术来防止 RESTful API 的 CSRF?

我对这个问题有一个确切的情况:将 csrf 保护与 RESTful API 结合起来有哪些可行的技术?

给出的一个答案是关于使用

  • 使用 SSL 的基本身份验证
  • 每个应用程序 1 个 API 密钥
  • 身份验证

我已经确信实施 OAuth2.0,您将拥有每个应用程序的 access_token、client_id、client_secret。

但是,我不知道这实际上有助于防止 CSRF。

我的观点是,归根结底,您仍然需要 ssl。

因为在 OAuth2.0 中,当客户端应用程序代表资源所有者发送请求时,它们需要与数据参数一起发送,例如 client_id、client_secret 和 access token。

如果没有 HTTPS,如果 client_id、client_secret 和 access token 是通过泄漏或中间人知道的,那么仍然存在 CSRF 的机会,尽管由于 access token 的到期期限而很小。

我的理解正确吗?

0 投票
4 回答
28473 浏览

django - 如何仅在某些情况下禁用 Django 的 csrf 保护?

我正在尝试在 Django 中编写一个站点,其中 API URL 与面向用户的 URL 相同。但是我在处理使用 POST 请求和 CSRF 保护的页面时遇到了问题。例如,如果我有一个页面 /foo/add 我希望能够通过两种方式向它发送 POST 请求:

  1. 作为最终用户(使用会话 cookie 进行身份验证)提交表单。这需要 CSRF 保护。
  2. 作为 API 客户端(使用 HTTP 请求标头进行身份验证)。如果启用 CSRF 保护,这将失败。

我找到了各种禁用 CSRF 的方法,例如 @csrf_exempt,但这些都在整个视图中禁用它。有没有办法在更细粒度的级别启用/禁用它?还是我只需要从头开始实施自己的 CSRF 保护?

0 投票
1 回答
1194 浏览

node.js - nodejs 是否有类似于 ruby​​ 的表单助手来生成 CSRF 令牌?

在 ruby​​ 中,人们可以做一些事情,比如<%= form_tag(:action => '/submit') do %> ... <% end %>获取包含 CSRF 令牌的表单。

节点中是否存在现有功能,它是如何实现的?

0 投票
1 回答
1202 浏览

javascript - 我们可以使用 javascript 在 http 请求中添加引荐来源网址吗?

我正在一个网站上测试 CSRF。该网站通过检查推荐人字段来阻止 CSRF。现在我创建了一个发送请求的 HTML 页面。如何使用 JavaScript 或任何其他方法将引用字段添加到该请求?

0 投票
1 回答
194 浏览

php - CSRF 保护和可用性

在最强大的 CSRF 保护之间,还有表单令牌保护。我对这种方法的问题是关于可用性:如果用户打开多个包含表单的页面,使用令牌,会生成多个令牌,但只有最后打开的页面可以成功发送表单,所有其他页面都会出错.

我想了2个解决方案:

  1. 在整个会话期间保留唯一令牌。
  2. 将所有生成的令牌存储在会话中。

但:

  1. 这是更现实的解决方案,但不太安全。
  2. 这会产生很大的资源开销,因为用户可以打开许多页面,而我必须存储所有生成的令牌。

因此,您是如何解决这个问题的?

PS 我正在开发的网站实际上是 PHP 中的电子商务,虽然汇款将通过外部提供商(如贝宝)进行管理,但我认为正确地为我的服务提供了良好的安全性。

0 投票
2 回答
6597 浏览

websocket - 防止 Websocket 的 CSRF

我目前正在考虑 websockets 中的 CSRF 漏洞。

我已经阻止了所有跨域 websocket 请求,但是存在脚本(例如这个 python bad boy)来绕过这些安全措施。

是否值得在用户的 index.html 中包含一个令牌,它必须作为查询字符串包含在 socket.io.connect() 调用中?这样在服务器上我们可以检查令牌是否符合我们的预期,否则阻止连接请求。

感谢所有的建议!

0 投票
1 回答
35 浏览

csrf-protection - 有没有办法记录某人对 Web 应用程序进行了 CSRF 攻击

我了解 CSRF 的工作原理、工作原理以及如何缓解它。现在,我有一个 Web 应用程序,它容易受到 CSRF 的攻击,我想知道是否有人成功地对我的 Web 应用程序进行了 CSRF 攻击。如果有 CSRF,有没有办法记录它

谢谢苏西

0 投票
2 回答
664 浏览

security - 我们是否需要对公共 URL 进行 CSRF 保护

我有一个没有任何表单的网络应用程序(禁用了网络服务器中的所有表单请求)。它只有几个公共 URL(在 URL 中有一些 GET 参数)。没有登录,它不使用任何cookies。

我需要为这个 Web 应用程序提供 CSRF 保护吗?

0 投票
2 回答
242 浏览

security - 如果您的网站不使用 cookie,您还需要担心 CSRF 保护吗?

我已经阅读了一些关于 CSRF/XSRF 的内容,其中很多似乎都在谈论 cookie,因为它们可以参与自动让用户重新登录。

所以我只是想知道如果您的网站不使用 cookie,您还需要担心使用它还是需要担心在可公开访问的表单上使用它?

我假设您仍然这样做,因为用户可能已经在浏览器中登录,然后他们可能会接触到它。

至于公共表格,显然您想要保护这些表格的唯一原因是您不希望远程站点向它们发布正确的信息!?