这是我参与「第四届青训营 」笔记创作活动的第5天
常见安全攻击的方式
Cross-Site-Scripting(XSS)
定义:攻击者通过将自己的script脚本注入至页面,从而实现数据窃取等操作。
XSS的特点:
- 通常难以从UI上感知(暗地地执行脚本)
- 窃取用户信息(cookie/token)
- 绘制UI(例如弹窗),诱骗用户点击/填写表单
添加恶意脚本
Stored XSS
- 恶意脚本被写在数据库中
- 访问页面->读数据===被攻击
- 危害最大,对全部用户可见
Reflected XSS
- 不涉及数据库
- 从URL上攻击
通过提交URL的时候获取字段
DOM-based XSS
- 不需要服务器的参与
- 恶意攻击的发起+执行,全部在浏览器完成
这一次恶意脚本是在浏览器中
Cross-site request forgery(CSRF)
恶意页面伪造成用户来访问其他页面使用服务
SQL Injection
定义:通过请求的过程中,将sql命令注入至数据库中,获取或修改数据库中的数据
读取请求字段,直接以字符串的形式拼接SQL语句
Denial of Service(DOS)
定义:通过某种方式,导致服务器资源被显著消耗,来不及响应更多请求,从而引起雪崩效应
Distributed Dos(DDOS)
定义:短时间内,来自大量的僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效,无法响应新请求
特点:
- 直接访问IP
- 任意Api
- 消耗大量带宽(直至耗尽)
中间人攻击
原理:浏览器和服务器的通信是通过一个中间媒介进行传输的,而双方都以为对方是浏览器或者服务器,中间人可以是恶意Web页面|路由器|ISP,可以在通信时窃取信息,修改请求。
防御措施
XSS
将数据存储在data中,而不是dom中
利用前端提供的现成工具来实现
- 前端主流框架是默认防御XSS
- Google-closure-library
- 部署的时候可以使用DOMPurify将代码进行编译
Content Security Policy(CSP)
- 自定义安全的域名(源)
- 只有来自安全源的脚本是可以执行的,否则直接抛错
CSRF的防御
CSRF--token
用户绑定:攻击者也可以是注册用户===可以获取自己的token
过期时间:【前向保密】