安全
- 网络传输(明文传输)
- 用户判断(用户身份伪造)
- 流程校验(时序及错误的状态判断绕过)
分析威胁
STRIDE 是从以下6 个方面去考虑。
威 胁 | 定 义 | 对应的安全属性 |
---|---|---|
Spoofing(伪装) | 冒充他人身份 | 认证 |
Tampering(篡改) | 修改数据或代码 | 完整性 |
Repudiation(抵赖) | 否认做过的事情 | 不可抵赖性 |
InformationDisclosure(信息泄露) | 机密信息泄露 | 机密性 |
Denial of Service(拒绝服务) | 拒绝服务 | 可用性 |
Elevation of Privilege(提升权限) | 未经授权获得许可 | 授权 |
常见形式
- 暴力破解(猜)
- 密码学(MD5,AES,DES)
- 常见编码形式(UTF8,Unicode,HEX)
- 注入
- 将输入转化为被执行的一部分
- 需要理解被执行的原理
- 需要构建绕过检验的编码
- XSS
- 通过输入让客户在阅读页面的时候被动运行JavaScript
- XSS攻击最基本的注入内容为 <script>alert(1)</script>
如果这个内容被发送到服务器端并且回写的时候会被执行,那么就意味着存在XSS漏洞。
- CSRF
- Cross-site request forgery跨站请求伪造。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。
- 界面注入&接口注入
- 界面注入效率底且屏蔽较多
- 接口注入快捷
- 判断接口
- 测试输入
- 根据返回判断逻辑
防护
- 会被执行SQL的要过滤
- 会被反显的要过滤
- 所有关键数据提交都要做Token
- 所有关键Cookie都要做Httponly
- 所有关键数据都不应该是明文(特别是数据库中的主键)
- 加密记得加Salt,Salt表和密码分离
- 业务逻辑验证要合理(时序图)