从我到目前为止所学到的,令牌的目的是防止攻击者伪造表单提交 .
例如,如果某个网站的表单中添加了添加到购物车中的商品,并且攻击者可能会使用您不想要的商品向您的购物车发送垃圾邮件 .
这是有道理的,因为购物车表单可能有多个有效输入,攻击者必须做的就是知道网站正在销售的项目 .
我理解令牌如何工作并在这种情况下增加安全性,因为它们确保用户实际填写并按下表格中的“提交”按钮以添加到购物车中的每个项目 .
但是,令牌是否为用户登录表单添加了任何安全性,这需要用户名和密码?
由于用户名和密码非常独特,攻击者必须知道这两种情况才能使登录伪造工作(即使你没有设置令牌),如果攻击者已经知道这一点,他就可以登录网站本人 . 更不用说,使用户登录的CSRF攻击无论如何都没有任何实际意义 .
我对CSRF攻击和令牌的理解是否正确?我怀疑它们对用户登录表单没用吗?
3 回答
是 . 通常,您需要像其他任何方式一样保护您的登录表单免受CSRF攻击 .
否则,您的网站很容易受到某种“受信任的域名网上诱骗”攻击 . 简而言之,CSRF易受攻击的登录页面使攻击者能够与受害者共享用户帐户 .
漏洞就像这样:
攻击者在受信任域上创建主机帐户
攻击者在受害者's browser with this host account'的凭据中伪造登录请求
攻击者欺骗受害者使用受信任的站点,他们可能不会注意到他们是通过主机帐户登录的
攻击者现在可以在浏览器使用主机帐户登录时访问受害者"created"(有意或无意)的任何数据或元数据
作为一个相关的例子,考虑YouTube . YouTube允许用户查看"their own"观看记录的记录,他们的登录表单是CSRF易受攻击的!因此,攻击者可以使用他们知道的密码设置帐户,使用该帐户将受害者登录到YouTube - 跟踪受害者正在观看的视频 .
在this comment thread中有一些讨论意味着它可以被用于隐私侵犯 . 或许,但引用Wikipedia's CSRF article中的部分:
强调“小说攻击” . 想象一下网络钓鱼攻击对用户造成的影响,然后想象一下网络钓鱼攻击通过用户自己的可信书签进入您的网站!在前面提到的评论主题中链接的论文提供了几个超越简单隐私攻击的例子 .
您的理解是正确的 - CSRF的重点在于攻击者可以事先伪造一个看似合法的请求 . 但是这不能通过登录表单来完成,除非攻击者知道受害者的用户名和密码,在这种情况下有更有效的攻击方式(登录自己) .
最终,攻击者可以做的唯一事情是,当安全系统可能将用户锁定一段时间时,通过垃圾邮件发送失败登录会给您的用户带来不便 .
CSRF验证登录前没有太多意义恕我直言 .
感谢@squiddle的链接:seclab.stanford.edu/websec/csrf/csrf.pdf,我们可以在第一页阅读:
如果您在登录前尝试CSRF验证,那么您可以让潜在的攻击者 grab 您网站的有效代码!然后,他/她将能够重新发布令牌以击败目的 .
也许攻击者可以尝试猜测您网站的用户名 . 我做了什么,如果IP地址试图猜测10个用户名没有成功,我只是黑名单 .