摘要 | 第5-6页 |
abstract | 第6-7页 |
第一章 绪论 | 第11-15页 |
1.1 课题的研究背景 | 第11-12页 |
1.2 国内外研究现状 | 第12-13页 |
1.3 本文主要研究内容 | 第13页 |
1.4 本论文的结构安排 | 第13-15页 |
第二章 PHP源代码缺陷分析技术的研究 | 第15-24页 |
2.1 代码缺陷分析技术 | 第15-19页 |
2.1.1 漏洞和缺陷 | 第15页 |
2.1.2 代码缺陷分析技术分类 | 第15-17页 |
2.1.3 代码静态分析技术 | 第17-19页 |
2.1.3.1 数据流分析 | 第17-18页 |
2.1.3.2 模型检验 | 第18页 |
2.1.3.3 符号执行 | 第18页 |
2.1.3.4 定理证明 | 第18页 |
2.1.3.5 污点传播 | 第18-19页 |
2.2 源代码静态分析工具 | 第19-22页 |
2.2.1 Fortify SCA | 第19-21页 |
2.2.2 Coverity Prevent | 第21-22页 |
2.2.3 Pixy | 第22页 |
2.3 PHP语言概述 | 第22-23页 |
2.3.1 PHP简介 | 第22页 |
2.3.2 PHP安装 | 第22-23页 |
2.4 本章小结 | 第23-24页 |
第三章 PHP源代码缺陷分析工具的设计 | 第24-52页 |
3.1 输入验证类漏洞 | 第24-26页 |
3.1.1 跨站脚本漏洞 | 第24-26页 |
3.1.2 SQL注入漏洞 | 第26页 |
3.2 数据流分析 | 第26-32页 |
3.2.1 基本块和控制流图 | 第27-28页 |
3.2.2 格 | 第28-29页 |
3.2.3 传递函数 | 第29页 |
3.2.4 数据流分析的特性 | 第29-32页 |
3.2.4.1 流敏感 | 第30页 |
3.2.4.2 过程间 | 第30-31页 |
3.2.4.3 上下文相关 | 第31页 |
3.2.4.4 路径敏感 | 第31-32页 |
3.3 PHP分析前端 | 第32-34页 |
3.3.1 解析树 | 第32-33页 |
3.3.1.1 词法分析 | 第32页 |
3.3.1.2 语法分析 | 第32-33页 |
3.3.2 PTAC和控制流图 | 第33-34页 |
3.4 PHP分析后端 | 第34页 |
3.5 量值分析 | 第34-38页 |
3.5.1 格定义 | 第34-35页 |
3.5.2 传递函数定义 | 第35-38页 |
3.5.2.1 普通变量 | 第36页 |
3.5.2.2 数组 | 第36-37页 |
3.5.2.3 全量值索引数组元素 | 第37-38页 |
3.5.2.4 非量值索引数组元素 | 第38页 |
3.6 别名分析 | 第38-45页 |
3.6.1 PHP别名 | 第38-39页 |
3.6.2 过程内别名分析 | 第39-41页 |
3.6.3 过程间别名分析 | 第41-45页 |
3.6.3.1 全局变量之间的别名 | 第42-43页 |
3.6.3.2 被调用函数形式参数之间的别名 | 第43-44页 |
3.6.3.3 全局变量和被调用函数形式参数之间的别名 | 第44页 |
3.6.3.4 全局变量和调用函数局部变量之间的别名 | 第44-45页 |
3.7 基于别名信息的量值分析 | 第45-47页 |
3.7.1 简单赋值 | 第45页 |
3.7.2 一元赋值、二元赋值 | 第45-46页 |
3.7.3 数组赋值、引用赋值、global申明、unset函数 | 第46页 |
3.7.4 调用预备、实际调用、调用返回 | 第46-47页 |
3.8 污点分析 | 第47-49页 |
3.8.1 格定义 | 第47-48页 |
3.8.2 传递函数定义 | 第48-49页 |
3.8.3 检测存储式跨站脚本漏洞 | 第49页 |
3.8.4 局限性 | 第49页 |
3.9 文件包含分析 | 第49-50页 |
3.10 本章小结 | 第50-52页 |
第四章 PHP源代码缺陷分析工具的开发 | 第52-66页 |
4.1 程序运行流程 | 第52页 |
4.2 生成解析树 | 第52-55页 |
4.3 生成控制流图 | 第55-57页 |
4.4 解决文件包含 | 第57-59页 |
4.5 量值分析 | 第59-60页 |
4.6 别名分析 | 第60-61页 |
4.7 污点分析 | 第61-63页 |
4.8 处理内置函数 | 第63-65页 |
4.9 本章小结 | 第65-66页 |
第五章 PHP源代码缺陷分析工具的测试 | 第66-71页 |
5.1 测试结果 | 第66-68页 |
5.2 误报原因 | 第68-69页 |
5.3 同类工具比较 | 第69-70页 |
5.4 本章小结 | 第70-71页 |
第六章 总结与展望 | 第71-73页 |
6.1 本文的主要贡献 | 第71页 |
6.2 下一步工作的展望 | 第71-73页 |
致谢 | 第73-74页 |
参考文献 | 第74-77页 |
攻读硕士学位期间取得的成果 | 第77-78页 |