[[Cross-site request forgery(CSRF)跨站请求伪造]]
What is the difference between XSS and CSRF?
Cross-site scripting (or XSS) | Cross-site request forgery (or CSRF) |
---|---|
攻击者可以在受害者的浏览器中,执行任意代码 | 攻击者诱导受害者执行操作 |
“双向的”,攻击者是可以读responses,获得数据的 | “单向的”,攻击者诱导用户发送请求,但看不到responses |
由此可见XSS危害要比CSRF大 |
Can CSRF tokens prevent XSS attacks?
可以,但不完全可以。CSRF token可以防御一些简单的反射型XSS攻击。
https://insecure-website.com/status?message=<script>/*+Bad+stuff+here...+*/</script>
https://insecure-website.com/status?csrf-token=CIwNZNlR4XbisJF39I8yWnWX9wX4WFoz&message=<script>/*+Bad+stuff+here...+*/</script>
这种情况下,token不正确,自然防御了XSS漏洞利用。
- 但是如果页面中别的函数没有CSRF token保护,那就可以正常利用反射性XSS漏洞
- 如果页面中存在可利用的XSS漏洞,有CSRF token保护也没用。”In this situation, the attacker’s script can request the relevant page to obtain a valid CSRF token, and then use the token to perform the protected action.”
- CSRF tokens没法防御存储型XSS。