第19章 查找源代码中的漏洞
19.1 代码审查方法
19.1.1 “黑盒”测试与“白盒测试”
19.1.2 代码审查方法
- 从进入点开始追踪用户向应用程序提交的数据,审查负责处理这些数据的代码
- 在代码中搜索表示存在常见漏洞的签名,并审查这些签名
- 对内在的危险代码进行逐行审查,理解应用程序的逻辑,并确定其中存在的所有问题
19.2 常见漏洞签名
19.2.1 跨站点脚本
19.2.2 SQL注入
19.2.3 路径遍历
19.2.4 任意重定向
19.2.5 OS命令注入
19.2.6 后门密码
19.2.7 本地代码漏洞
- 缓冲区溢出漏洞
- 整数漏洞
- 格式化字符串漏洞
19.2.8 源代码注释
19.3 Java平台
19.3.1 确定用户提交的数据
19.3.2 会话交互
19.3.3 潜在危险的API
- 文件访问
- 数据库访问
- 动态代码执行
- OS命令执行
- URL重定向
- 套接字
19.3.4 配置Java环境
19.4 ASP.NET
19.4.1 确定用户提交的数据
19.4.2 会话交互
19.4.3 潜在危险的API
- 文件访问
- 数据库访问
- 动态代码执行
- OS命令注入
- URL重定向
- 套接字
19.4.4 配置ASP.NET
19.5 PHP
19.5.1 确定用户提交的数据
19.5.2 会话交互
19.5.3 潜在危险的API
- 文件访问
- 数据库访问
- 动态代码执行
- OS命令注入
- URL重定向
- 套接字
19.5.4 配置PHP环境
- 使用全局变量注册
- 安全模式
- magic quotes
- 其他
19.6 Perl
19.6.1 确定用户提交的数据
19.6.2 会话交互
19.6.3 潜在危险的API
- 文件访问
- 数据库访问
- 动态代码执行
- OS命令注入
- URL重定向
- 套接字
19.6.4 配置Perl环境
19.7 JavaScript
- 读取基于DOM的数据以及写入或以其它烦烦烦修改当前文档的API