有关于预防CSRF攻击的文章非常多。
但是我就是不明白:为什么我不能在目标页面中解析csrf令牌,然后将其与我的伪造请求一起提交?
如果您能够将脚本代码注入到目标页面(XSS),那么是的,您可以这样做,从而使CSRF预防措施失效。
CSRF令牌必须存储在最终用户接收到的页面中(否则他也不会知道它)。
事实上,在安全评估中,XSS通常不是评估其自身的损害潜力,而是评估其在此类攻击中的使用情况。
由于 CSRF 令牌的值事先未知。
CSRF令牌应该对于每个用户和每个请求都是完全不同的令牌,这样攻击者就无法猜测。
对于php、.net和javascript,请查看OWASP CSRFGuard Project - 如果您正在使用java和jsf 2.x,则已经安全防范了CSRF(只要您使用POST而不是GET - 对于此,您将需要等待JSF 2.2)。否则,如果您没有使用JSF,则来自OWASP ESAPI的HTTPUtillities Interface也可能非常有帮助!