5月30日 21:29
CSRF 是冒充用户,XSS 是控制浏览器吗?
可以这样理解:CSRF 是攻击者借用户身份办事,XSS 是攻击者把脚本塞进页面里办事。CSRF 不一定能读取用户数据,它更关心“让服务器执行一个动作”;XSS 则运行在目标网站页面上下文中,能读页面内容、调同源接口、窃取可访问的 Token,危害范围通常更大。
追问
CSRF 为什么叫冒充用户?
因为请求到达服务器时带着用户的登录 Cookie,看起来像用户自己发起。攻击者不需要知道密码,也不需要拿到 Cookie 内容。
XSS 为什么叫控制浏览器?
XSS 恶意代码运行在目标网站页面里,能访问当前页面允许访问的资源,比如表单内容和同源接口。
两者防护会互相替代吗?
不会。CSRF Token 解决请求意图校验,输出编码和 CSP 解决脚本注入执行,保护层面不同。
实战最常见误判是什么?
以为 POST 就不会被 CSRF,或以为 HttpOnly 就没有 XSS 风险。两种判断都不完整。
示例
html<img src="https://app.example.com/change-email?email=a@evil.com"> <img src=x onerror="fetch('/api/profile')">