0%

XSS vs CSRF

[[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。