我一直在查看代码示例,这些示例会在标准用户名/密码登录页面上放置防伪标记。甚至Asp.Net网络项目模板都可以做到。
为什么呢?唯一被更改的系统状态是用户的登录状态,为了实现这一点,攻击者将需要他们的用户名和密码,这意味着一切都已经最大程度地受到损害。
我在这里看不到攻击媒介。我错过了什么吗?
答案 0 :(得分:1)
扩展IRCMaxell的答案。根据定义,CSRF意味着使用用户的会话和/或对它们的权限。未经过身份验证的用户不是CSRF的目标。
以下是有关该主题的有用的OWASP文章:https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29
在登录表单中放置防伪标记几乎完全是为了保持一致。
编辑:
我最后的陈述是不正确的。这里的另一个答案正确地指出“帐户固定”攻击是可能的。这意味着可以使用非自己的凭据将某人登录到站点。这可能导致潜在的个人或财务信息披露。
话虽如此,对所有网络表单进行CSRF验证的一般做法是一种有用且通常是必要的做法。
答案 1 :(得分:1)
唯一被更改的系统状态是用户的登录状态,为了实现这一点,攻击者需要他们的用户名和密码,这意味着一切都已经受到最大程度的损害。
问题是,攻击者可以使用用户名和密码访问攻击者可以访问的其他帐户,而不是尝试使用该用户。
如果没有CSRF令牌,攻击者可以强制用户登录自己的帐户:帐户锁定攻击。根据攻击的开始方式以及应用程序显示当前帐户的显着程度,受害者可能不会注意到,并且会假设他们仍然登录到自己的帐户。这可能会导致他们做一些不合适的事情,例如将敏感信息输入攻击者以后可以登录帐户查看的区域。
帐户固定攻击究竟是什么导致的是高度针对特定应用程序的,对于许多应用程序而言,可能没有实际攻击可能。但是对于通用登录表单,您无法确定,所以是的,您应该使用CSRF令牌。