本书聚焦Web安全相关技术,按照客户端、网络协议、服务端和数据库的逻辑线对安全问题进行了分类和分析。本书从基本的漏洞入手,对XSS跨站脚本攻击、文件上传漏洞、文件包含漏洞、命令执行漏洞和SQL注入漏洞等进行了讨论,详细讲解了它们的产生原理、利用方法及防御的演进过程。同时,本书提供了配套的本地和云上实验靶场,可帮助读者更好地理解漏洞原理和利用方法,提高学习效果。
本书既可作为高等学校信息安全、网络空间安全、计算机科学与技术及相关专业本科生学习“Web安全技术”课程的教材,也可供从事Web安全相关工作的工程技术人员学习和参考。
随着企业数字化转型的加速,网络安全问题变得日益严峻。近十年来,针对我国网络安全和信息化发展中遇到的新形势、新挑战和新问题,国家以全球视野和发展的眼光,立足发展实际,对网络安全领域的发展进行了精心谋划和科学布局,不仅建立完善了网络安全的顶层设计和规划,同时确立了网络安全发展的战略布局和方向指引,保障了新时代的国家现代化发展进程。为了配合国家安全战略,加快高校网络空间安全高层次人才培养,2015年国务院学位委员会和教育部决定在“工学”门类下增设“网络空间安全”一级学科。2016年,中央网信办、发改委、教育部等六部门联合印发了《关于加强网络安全学科建设和人才培养的意见》,网络和信息安全类的课程体系逐步成型,“Web安全技术”课程成为网络和信息安全相关专业的核心专业课。
本书紧跟时代步伐,参照开放性Web应用程序安全项目(OWASP)的十大漏洞进行分类和分析,将全书分为五章。第1章简述了Web技术以及Web涉及的安全问题。第2章讲解了HTML + CSS + JavaScript的架构,并从攻击和防守两个角度分析了XSS这个目前主流的前端漏洞。第3章重点介绍了HTTP缺陷以及攻击者对HTTP的恶意利用所产生的中间人攻击和重放攻击等安全问题。第4章先简述了动态脚本开发语言PHP的基础语法和语法漏洞,然后在此基础上介绍了后端漏洞—文件上传漏洞、文件包含漏洞、序列化和反序列化漏洞、命令执行漏洞的利用方法和防御方法。第5章主要介绍了数据库的SQL注入漏洞(包括最简单的显错注入、相对复杂的时间布尔盲注,以及更深入的二次注入、宽字节等变形注入)、绕过WAF的SQL注入和SQL注入漏洞的防御等内容。本书在介绍各个漏洞利用时都提供了与之配套的本地和云上实验靶场,通过实际动手实践,读者可以加深对漏洞原理的理解,提高学习效果。
本书第1章由李晓峰编写,第2章至第5章由沈晋慧编写,附录部分由李月琴整理。本书的出版得到了北京联合大学相关部门和老师们的大力支持,在此对所有为本书出版提供帮助和支持的同仁和朋友表示衷心的感谢!
由于编者水平有限,书中难免存在不妥或疏漏之处,敬请读者批评指正。
编 者
2023年3月
第1章 Web技术和安全问题 1
1.1 Web技术概述 1
1.1.1 Web技术的发展 1
1.1.2 Web全栈技术 3
1.1.3 Web应用体系框架 3
1.1.4 本书使用的Web集成环境 5
1.2 Web涉及的安全问题 6
1.2.1 Web安全问题的产生原因和相关案例 6
1.2.2 开放性Web应用程序安全项目(OWASP) 8
1.3 Web安全技术的学习方法 10
练习题 13
第2章 客户端安全 14
2.1 客户端开发 14
2.1.1 客户端开发基础 14
2.1.2 HTML 15
2.1.3 CSS 20
2.1.4 JavaScript 24
2.2 XSS跨站脚本攻击 28
2.2.1 XSS基础 28
2.2.2 反射型XSS 29
2.2.3 存储型XSS 35
2.2.4 XSS攻击平台 37
练习题 39
第3章 网络协议安全 40
3.1 HTTP简介 40
3.1.1 HTTP的工作流程 40
3.1.2 HTTP请求 42
3.1.3 浏览器中的HTTP数据包 45
3.2 HTTP安全 47
3.2.1 HTTP的缺陷 47
3.2.2 劫持工具 49
3.2.3 HTTP的恶意利用 51
练习题 61
第4章 服务端安全 62
4.1 PHP基础 62
4.1.1 基础语法 62
4.1.2 表单验证 65
4.2 PHP语法漏洞 70
4.2.1 变量的弱类型漏洞 70
4.2.2 PHP函数类漏洞 74
4.3 文件上传漏洞 80
4.3.1 特洛伊木马和菜刀类工具 80
4.3.2 漏洞原理 85
4.3.3 客户端验证和文件类型绕过 86
4.3.4 服务器操作系统关联型漏洞 92
4.3.5 编码格式漏洞 95
4.3.6 Web服务器配置型漏洞 99
4.3.7 条件竞争 103
4.3.8 文件上传漏洞的防御 107
4.4 文件包含漏洞 108
4.4.1 漏洞原理 108
4.4.2 漏洞利用 110
4.4.3 伪协议包含 114
4.4.4 文件包含漏洞的防御 123
4.5 序列化和反序列化漏洞 123
4.5.1 序列化基础 123
4.5.2 魔术方法 129
4.5.3 漏洞原理 130
4.5.4 漏洞利用 133
4.5.5 序列化和反序列化漏洞的防御 136
4.6 命令执行漏洞 137
4.6.1 漏洞原理 137
4.6.2 漏洞利用 139
4.6.3 绕过方法 145
4.6.4 命令执行漏洞的防御 146
练习题 146
第5章 数据库安全 148
5.1 数据库基础 148
5.1.1 数据库和安全问题 148
5.1.2 PhpStudy中的MySQL 149
5.1.3 MySQL基本指令 150
5.1.4 MySQL与PHP的连接 157
5.2 SQL注入漏洞 158
5.2.1 漏洞原理 158
5.2.2 万能密码 159
5.2.3 跨表检索 162
5.2.4 注入点类型 170
5.2.5 基本SQL注入 173
5.2.6 高阶SQL注入 177
5.3 绕过WAF的SQL注入 190
5.3.1 WAF基础 190
5.3.2 绕过方法 191
5.4 SQL注入漏洞的防御 195
练习题 195
附录 与安全相关的法律法规 197
参考文献 200