- XSS跨站请求攻击
- 例子
- 一个博客网站,我发表了一篇博客,其中嵌入
<script>脚本 - 脚本内容:获取
cookie,发送到我的服务器(服务器配合跨域) - 发表这篇博客,有人查看它,我轻松拿到访问者的
cookie
<p>一段文字1</p>
<p>一段文字2</p>
<p>一段文字3</p>
<script>alert(document.cookie)</script>
<script>alert(document.cookie);</script>
* **预防**
* 替换特殊字符,如`<`变为`<`,`>`变为`t>`
* `script`变为`<script>`,直接显示,而不会作为脚本执行
* 前端要替换字符,后端也要替换字符,使用[xxs (opens new window)](https://npmjs.com/packages/xss)库处理即可
- CSRF跨站请求伪造
- 例子
- 你正在购物,看中了某个商品,商品
id是100(此时我已经登录了网站cookie记录在本地) - 付费接口是
xx.com/pay?id=100,但没有任何验证 - 我是攻击者,我看中的商品
id=200 - 我向你发送一封电子邮件,标题很吸引人
- 但邮件正文隐藏着
<img src="xx.com/pay?id=200" /> - 你一查看邮件,就帮我买了
id=200的商品 - 什么会这样?
- 我登录了网站,记录用户信息
cookie在本地 img标签支持跨域向xx.com/pay?id=200发送请求,会携带本地的cookie- 注意 :
CSRF拿不到用户的cookie,只是借用了cookie
- 预防
- 使用
POST接口 - 增加验证,如支付密码、短信验证码、指纹等