登录页面上是否需要防伪标记?

时间:2015-04-28 15:35:38

标签: security web login csrf antiforgerytoken

我一直在查看代码示例,这些示例会在标准用户名/密码登录页面上放置防伪标记。甚至Asp.Net网络项目模板都可以做到。

为什么呢?唯一被更改的系统状态是用户的登录状态,为了实现这一点,攻击者将需要他们的用户名和密码,这意味着一切都已经最大程度地受到损害。

我在这里看不到攻击媒介。我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

扩展IRCMaxell的答案。根据定义,CSRF意味着使用用户的会话和/或对它们的权限。未经过身份验证的用户不是CSRF的目标。

以下是有关该主题的有用的OWASP文章:https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29

在登录表单中放置防伪标记几乎完全是为了保持一致。

编辑:

我最后的陈述是不正确的。这里的另一个答案正确地指出“帐户固定”攻击是可能的。这意味着可以使用非自己的凭据将某人登录到站点。这可能导致潜在的个人或财务信息披露。

话虽如此,对所有网络表单进行CSRF验证的一般做法是一种有用且通常是必要的做法。

答案 1 :(得分:1)

  

唯一被更改的系统状态是用户的登录状态,为了实现这一点,攻击者需要他们的用户名和密码,这意味着一切都已经受到最大程度的损害。

问题是,攻击者可以使用用户名和密码访问攻击者可以访问的其他帐户,而不是尝试使用该用户。

如果没有CSRF令牌,攻击者可以强制用户登录自己的帐户:帐户锁定攻击。根据攻击的开始方式以及应用程序显示当前帐户的显着程度,受害者可能不会注意到,并且会假设他们仍然登录到自己的帐户。这可能会导致他们做一些不合适的事情,例如将敏感信息输入攻击者以后可以登录帐户查看的区域。

帐户固定攻击究竟是什么导致的是高度针对特定应用程序的,对于许多应用程序而言,可能没有实际攻击可能。但是对于通用登录表单,您无法确定,所以是的,您应该使用CSRF令牌。