Fwio

CSRF 和 XSS 攻击

《The JWT Handbook》看到的,对这两种网络攻击简单易懂的解释。

Cross Site Request Forgery (CSRF)

跨站点请求伪造(Cross Site Request Forgery, CSRF),在用户已经登录的页面上,诱使客户端向目标站点发送请求。 即攻击者冒充用户(通过劫持 cookie)发起了请求。

常见的场景是,站点植入了一个<img>元素,由于浏览器会忽略同源策略直接根据<img>中的src属性发起请求,所以用户每次进入包含该图片的页面时, <img>元素都将冒充用户发起一个请求。

一般的 CSRF 策略是为从正确源发出的请求添加正确的头部。当然,如果 JWT 不被客户端存为 cookie ,那 CSRF 就无法生效。

Cross Site Scripting (XSS)

跨站点脚本(Cross Site Scripting, XSS)是将恶意脚本注入到受信任站点。恶意脚本可能窃取 cookie 或者 client storage 中的用户 token。

XSS 攻击一般由不对传入后端的数据做合适的校验引起的,类似于 sql 注入攻击。

同样,防止 XSS 攻击需要在后端对传入的数据做相应处理。如果使用了 cookie,那么将其设置为HttpOnly的,可以防止用户 token 被劫持。