XSS跨站脚本攻击
场景:
- 一个博客网站,我发表一篇博客,其中嵌入
<script>
脚本 - 脚本内容:获取
cookie
,发送到我的服务器(服务器配合跨域) - 发布这篇博客,有人查看它,我轻松收割访问者的cookie
如何预防:替换特殊字符(可以使用工具做XSS的预防)
- 替换特殊字符,比如
<
变为<
,>
变为>
<script>
变为<script>
, 直接显示,而不会作为脚本被执行- 前后端都进行特殊字符替换(前端在显示的时候替换,后端在存储的时候替换)
XSRF跨站请求伪造
场景:
- 你正在购物,看中了某个商品,商品id是100
- 付费接口是xxx.com/pay?id=100,但没有任何验证
- 我是攻击者,我看中了一个商品,id是200
- 我向你发送一封电子邮件,邮件标题很吸引人
- 但是邮件正文隐藏着
<img src=xxx.com/pay?id=200/>
(img发送的请求是支持跨域的,用户信息会被带过去) - 你一查看邮件,就购买了id是200的商品
如何预防:
- 使用post接口(在post接口做跨域比较麻烦,需要服务器端支持等等)
- 增加验证,例如密码、短信验证码、指纹等
- 验证refer
- Anti crsf token