2011-07-04 47 views
5

关于preventing CSRF的信息有很多。csrf保护

但我只是不明白:为什么我不能仅仅解析目标页面表单中的csrf标记并将其与我的伪造请求一起提交?

回答

0

由于CSRF令牌的值未预先知道。

1

如果您能够将脚本代码注入目标页面(XSS),那么是的,您可以这样做,从而使CSRF预防无用。

CSRF令牌必须存储在最终用户收到的页面(或者他也不会知道它)。事实上,在安全评估中,XSS通常不会评估自身的潜在伤害,而是仅仅评估其在这种攻击中的使用。

0

CSRF令牌应该是每个用户的每个时间和每个请求一个完全不同的令牌,所以它永远不会被攻击者猜到。

对于php,.net和javascript有一个在OWASP CSRFGuard Project看看 - 如果你正在使用java和jsf 2.x它已经保存对CSRF(只要你使用POST而不是GET - 为此你将有等待JSF 2.2)否则,如果你在没有JSF的情况下工作,OWASP ESAPI的HTTPUtillities Interface也可能非常有帮助!

1

CSRF攻击是盲目的。他们进行会话骑行,攻击者无法直接控制,除非他可以通过XSS漏洞提取令牌。通常可以使用会话宽度令牌。每个请求旋转令牌可能是一种矫枉过正的行为,并可能导致错误警报。我更喜欢使用主会话令牌为每个资源使用令牌。