没有 CSRF 代币的表格:有啥风险
Posted
技术标签:
【中文标题】没有 CSRF 代币的表格:有啥风险【英文标题】:Form without CSRF token: what are the risks没有 CSRF 代币的表格:有什么风险 【发布时间】:2011-06-11 13:08:50 【问题描述】:如果我不在表单中使用 csrf 令牌,我将面临哪些风险?我不是在寻找简单的标签或风险名称,因为这些可能会造成混淆。我需要用简单的英语了解攻击者究竟能做什么,只有在什么情况下才能做到这一点。
【问题讨论】:
听起来像是有人试图了解有关应用安全的更多信息。 【参考方案1】:我建议您阅读这篇出色的文章,解释CSRF 是什么以及如何最好地保护自己免受它的侵害。
【讨论】:
samquo 这篇文章解释说,或者我是愚蠢的 :$ 它有一个“Example Exploit”部分 @samquo 您的网站可能不会受到此攻击。但例如,如果 gmail 在设置 cookie 时没有 CSRF 保护,他们可以使用我的帐户发送电子邮件。这一切都在文章中。你应该读一下吗? @samquo 您的网站可能不会受到此攻击。但是例如,如果当 cookie 设置(我已登录)时 gmail 没有 CSRF 保护,他们可以使用我的帐户发送电子邮件。这一切都在文章中。你应该读一下吗?【参考方案2】:CSRF 漏洞允许恶意用户(或网站)使毫无戒心的用户在您的网站上执行他们不希望发生的操作。
一些现实世界的例子是,如果您允许用户通过 GET 而不是 POST 删除帐户,有人可能会在您的网站上发布以下评论(假设该网站有某种方式可以发布 cmets 或其他输入等.)
我想我会在您的网站上发表评论。看看这张很酷的图片!
现在,只要登录用户加载该页面,他们的帐户就会被删除。如果它是通过 POST 而不是 GET 完成的,那么有人可以制作一个表单并诱骗用户提交它,并且会发生相同的结果。而如果你使用 CSRF 令牌,这是不可能的。
另一个例子是,外部网站可以制作一个向您的网站发布的表单,并执行不受欢迎的操作。因此,假设您的网站有一个不使用 CSRF 令牌的购物车。恶意站点可能会创建一个带有“单击此处注册”按钮的表单,但实际上从您的站点订购了 1000 个东西。如果您网站的登录用户访问此恶意网站并单击按钮,他们会在邮件中收到惊喜。
显然还有其他情况,这些只是几个例子。 Google 搜索应该会显示大量文章和教程,其中许多可能还有其他示例。 Wikipedia page 也有一些你可能会感兴趣的例子。
这些示例的主要思想是,有人可以诱使您的网站执行某项操作,就好像它来自用户一样,而实际上用户并不知道它正在发生或不希望它发生。如果您在您的网站上有任何破坏性(即可以从用户帐户中删除内容、注销用户等)或关键(即处理金钱)的操作,您可能应该使用 CSRF 令牌。如果您的网站只是朋友的相册等,那么您可能不需要使用 CSRF 令牌(尽管在您构建需要它们的网站时练习总是很好)。
除非您添加令牌以确保请求来自您的网站有意呈现给用户的表单,否则您实际上无法知道用户是否打算执行该操作。
因此,您始终希望在生成 POST 的每个表单上使用唯一令牌,并验证发布到您网站的任何请求是否具有当前用户的有效令牌。还要确保令牌在一段时间后过期,以免它们永远存在。
【讨论】:
以上是关于没有 CSRF 代币的表格:有啥风险的主要内容,如果未能解决你的问题,请参考以下文章