这是我参与「第四届青训营 」笔记创作活动的的第6天
1)攻击篇
- XSS
它是指攻击者往web页面或url里插入恶意JavaScript脚本代码且应用程序对用户输入的内容没有过滤,那么当正常用户浏览该页面时,嵌入在web页面的恶意JavaScript脚本代码会被执行,从而达到恶意攻击正常用户的目的。
- XSS一些特点
- 通常难以从UI上感知(暗地执行脚本)
- 窃取用户信息(cookie/token)
- 绘制UI(例如弹窗),诱骗用户点击/填写表单
- XSS通常利用盲目信任用户的提交内容进行攻击
- XSS demo
- XSS分类
- Stored XSS
- Reflected XSS
- Dom-based XSS
- Mutation-bssed XSS
- CSRF
Cross-site request forgery(CSRF)原理: 用户登录了某网站A,并在本地记录了cookie,在没有退出该网站时(cookie有效的时间内),攻击者发送引诱网站B,B要求访问A,从而达到获取用户隐私。
- DDOS
DDos攻击原理:短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。
2)防御篇
- XSS防御
- 永远不信任用户的提交内容
- 不要将用户的提交内容直接转换成DOM
- 用户应用需求需要使用到动态DOM时间,应该设置逻辑对上传DOM和解析DOM进行转义
- 对于svg文件的上传应该尤其的注意防护,svg文件可以内嵌js脚本
- 尽量不要允许用户自定义跳转(JS)、自定义样式也不行。
- CSP防御
- CSRF防御
- CSRF--token
if(请求来自合法页面)
then(服务器接收过页面请求)
then(服务器可以标识)
- SameSite vs CORS
- Injection beyond SQL
- 防范DoS攻击:
- ReDoS 减少允许用户使用正则表达式请求
增加校验, 对代码做扫描 +正则性能测试
- L-DoS
限流: 限制流量的异常波动,对于异常IP封锁。
并不是非黑即白: 有时候需要请求量超过阈值才能检测出L-DoS
分析代码的性能瓶颈:同步调用、串行逻辑、CPU密集操作
- DDoS
过滤:负载均衡、API网关
抗量:CDN、快速扩容、 非核心服务降级备战
- 中间人防御
HTTP特性: 可靠性-明文加密,完整性:MAC验证;不可抵赖性-数字签名
HTTPS加密:在三次握手时进行hash加密,利用公钥和证书进行数字签名校验。
将HTTP主动升级到HTTPS:需要之前要有一次HTTPS访问 当静态资源被劫持篡改了,可以运用SRI对资源做hash验证。