这是我参与「第四届青训营 」笔记创作活动的的第5天
一、重点内容:
- Web安全中的攻击手段
- Web安全中的防御措施
二、详细知识点介绍:
假如你是一个黑客——攻击篇
跨站脚本攻击Cross-Site Scripting XSS
盲目信任用户提交的内容,将字符串转换为DOM
- document.write
- element.innerHTML=str
- SSR(user_data)
特点
- 难以从UI上感知,暗中执行脚本
- 窃取用户信息
- 绘制UI,诱骗用户点击/填写表单
存储型XSS
将脚本存储在数据库中,访问页面时读取数据即被攻击,对全部用户可见,危害最大。
反射型XSS
从服务器到浏览器,不涉及数据库,从URL上发起攻击
基于DOM的XSS
不需要服务器,完全在浏览器中完成恶意攻击的发起和执行
跨站伪造请求 Cross-Site request forgery
- 用户不知情
- 利用用户权限cookie
- 构造指定HTTP请求,窃取或修改用户敏感信息
注入 Injection
sql注入
通过SQL参数恶意注入SQL语句来运行非法SQL获取、修改、删除数据
CLI
OS command
SSRF
Denial of Service DoS
通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而雪崩效应
正则表达式——贪婪模式
?:有一个即可
没有?:匹配多个
ReDoS
Logical DoS
- 耗时的同步操作
- 数据库写入
- SQL join
- 文件备份
- 循环执行
DDoS
短时间内大量的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩,无法响应新请求
- 直接访问IP
- 任意API
- 消耗大量带宽
中间人攻击
假如你是一个开发者——防御篇
XSS
永远不要信任用户的提交内容,不要将用户提交内容直接转换为DOM
防御XSS工具
Same-origin Policy 同源策略
协议,域名,端口三者必须都相同,才能被称为同源
Content Security Policy CSP
- 哪些源被认为是安全的
- 来自安全源的脚本可以执行,否则直接抛错
- 对 eval+inline script 说不
先请求页面再请求API
Regex DoS
- Code Review
- 代码扫描 + 正则性能测试
- 不使用用户提供的正则
Logical DoS
- 分析代码中的性能瓶颈
- 限流
DDoS
-
流量治理
- 负载均衡
- API 网关
- CDN
- 快速自动扩容
- 非核心服务降级
防御中间人
- 可靠性:加密
- 完整性:MAC验证
- 不可抵赖性:数字签名
三、课后个人总结:
安全问题是十分常见的,也是十分重要的,我们需要高度关注。随着技术的不断进步,很多的安全问题不断被修复或防御,但也会伴生出新的安全问题,所以我们要保持学习的态度,研究新的安全问题。
\