【发布时间】:2015-01-16 04:30:26
【问题描述】:
关于preventing CSRF 的文章很多。
但我就是不明白:为什么我不能只解析目标页面表单中的 csrf 令牌并将其与我的伪造请求一起提交?
【问题讨论】:
关于preventing CSRF 的文章很多。
但我就是不明白:为什么我不能只解析目标页面表单中的 csrf 令牌并将其与我的伪造请求一起提交?
【问题讨论】:
如果您能够将脚本代码注入目标页面 (XSS),那么是的,您可以这样做,从而使 CSRF 预防无效。
CSRF 令牌必须存储在最终用户收到的页面中(否则他也不会知道)。
事实上,在安全评估中,XSS 通常不是针对其自身的潜在破坏性进行评估,而是针对其在此类攻击中的用途进行评估。
【讨论】:
CSRF 攻击是盲目的。他们进行会话骑行,攻击者无法直接控制,除非他可以通过 XSS 漏洞提取令牌。通常可以使用会话范围的令牌。每个请求轮换令牌可能是一种矫枉过正的做法,并可能导致误报。我更喜欢将每个资源的令牌与主会话令牌一起使用。
【讨论】:
CSRF 令牌对于每个用户和每个请求都应该是完全不同的令牌,因此攻击者永远无法猜到它。
对于 php、.net 和 javascript,请查看 OWASP CSRFGuard Project - 如果您正在使用 java 和 jsf 2.x,它已经针对 CSRF 进行了保存(只要您使用 POST 而不是 GET - 为此您将必须等待 JSF 2.2)否则如果您在没有 JSF 的情况下工作,来自 OWASP ESAPI 的 HTTPUtillities Interface 也可能非常有帮助!
【讨论】:
因为事先不知道 CSRF 令牌的价值。
【讨论】: