本书在《 Web开发与安全防范》“十二五”职业教育国家规划教材的基础上改版而成,也是工业和信息化部“十四五”规划教材。本书紧扣网络安全实战化人才的培养需求,将“实战化能力与思辨能力培养”的教学理念融入设计和编写中,以开发一个博客系统为主线,融入系统设计、编码实现、测试、发布、运维的过程中可能出现的安全问题,以及针对安全问题的测试、验证和修复的相关知识与技能。本书共分为 9个项目,涵盖 Web安全基础、安全的登录认证、安全的数据库交互、安全的用户输入、安全的个人信息修改、安全的文件上传、安全的文件包含、安全的应用发布和安全的 Web防护体系建设,本书配套了丰富的数字资源。
武春岭,男,汉族,中共党员,二级教授,现任重庆电子工程职业学院人工智能与大数据学院院长。重庆市政协委员,国家"万人计划”教学名师,享受国务院政府特殊津贴专家,信息安全技术应用国家级教学创新团队负责人,重庆市五一劳动奖章获得者,重庆市技术能手,重庆市特级技师、重庆市级名师,重庆市委网信办网络安全专家咨询委员会副主任,重庆市公安局网络与信息安全信息通报机制专家,重庆市教委信息化专家,兼任中共重庆市网信办专家副主任委员,国家安全行业指导委员会委员,世界技能大赛网络安全赛项中国区专家。2021年4月,入选重庆五一劳动奖章拟表彰人选公示名单。2021年10月,被表彰为重庆市第六届先进工作者。 2021年9月26日,荣获全国教材建设先进个人称号。
项目一 Web 安全基础 1
1.1 任务一:Web 技术的发展历程 . 2
1.1.1 Web 1.0 . 3
1.1.2 Web 2.0 . 3
1.1.3 Web 3.0 .. 4
1.2 任务二:Web 安全的核心问题 . 4
1.3 任务三:HTTP 及安全性 . 6
1.3.1 HTTP 概述 .. 6
1.3.2 HTTPS 的安全性分析 11
1.4 任务四:Web 应用中的编码与加密 15
1.4.1 字符编码 16
1.4.2 传输过程的编码 .. 17
1.4.3 Web 系统中的加密方法 .. 19
项目二 安全的登录认证 . 21
2.1 任务一:登录认证功能实现 22
2.1.1 了解登录认证 22
2.1.2 创建登录页面 23
2.1.3 判断登录状态 24
2.1.4 增加验证码 .. 26
2.2 任务二:登录认证漏洞形成原理 . 29
2.2.1 登录认证漏洞的概念 29
2.2.2 登录认证漏洞的分类 29
2.2.3 登录认证漏洞的危害 30
2.3 任务三:登录认证漏洞的检测与验证 .. 30
2.3.1 验证码重放漏洞 .. 30
2.3.2 用户名探测漏洞 .. 36
2.3.3 弱密码漏洞 .. 41
2.4 任务四:登录认证漏洞的修复与防范 .. 43
2.4.1 验证码重放漏洞的修复 .. 43
2.4.2 用户名探测漏洞的修复 .. 50
2.4.3 弱密码漏洞的修复 . 54
项目三 安全的数据库交互 59
3.1 任务一:利用数据库实现动态网页 60
3.1.1 了解数据库 .. 60
3.1.2 使用数据库存储用户的身份信息 . 62
3.1.3 使用数据库存储文章 64
3.1.4 实现文章搜索功能 . 65
3.2 任务二:SQL 注入漏洞的形成原理 66
3.2.1 SQL 注入漏洞的概念 66
3.2.2 SQL 注入漏洞的分类 67
3.2.3 SQL 注入漏洞的危害 67
3.3 任务三:SQL 注入漏洞的检测与验证 .. 68
3.3.1 绕过后台登录漏洞(字符型注入漏洞) . 68
3.3.2 文章页面注入漏洞(数字型注入漏洞) . 72
3.3.3 搜索框注入漏洞 .. 74
3.3.4 SQL 注入漏洞的进阶技巧. 76
3.4 任务四:SQL 注入漏洞的修复与防范 .. 78
3.4.1 参数化查询 .. 78
3.4.2 绕过后台登录漏洞的修复(字符型注入漏洞的修复) . 79
3.4.3 文章页面注入漏洞的修复(数字型注入漏洞的修复) . 81
3.4.4 搜索框注入漏洞的修复(搜索框注入漏洞的修复) .. 84
项目四 安全的用户输入 . 88
4.1 任务一:博客系统相关功能实现 . 89
4.1.1 文章发布相关功能实现 .. 89
4.1.2 评论功能实现 95
4.2 任务二:跨站脚本攻击的原理 .. 99
4.2.1 反射型 XSS 攻击 . 99
4.2.2 存储型 XSS 攻击 . 99
4.2.3 DOM 型 XSS 攻击 100
4.3 任务三:跨站脚本漏洞检测与验证 . 100
4.3.1 检测跨站脚本漏洞 .. 101
4.3.2 验证跨站脚本漏洞 .. 102
4.4 任务四:跨站脚本漏洞的修复与防范 105
4.4.1 对用户输入进行处理 . 105
4.4.2 使用内容安全策略 .. 106
4.4.3 使用安全 Cookie 106
项目五 安全的个人信息修改. 108
5.1 任务一:博客系统的功能实现 109
5.1.1 创建表单 . 109
5.1.2 处理表单提交 . 109
5.2 任务二:跨站请求伪造攻击的原理 ..110
5.2.1 CSRF 攻击的步骤 .111
5.2.2 CSRF 攻击的特点 .111
5.3 任务三:跨站请求伪造漏洞检测与验证 111
5.4 任务四:跨站请求伪造漏洞修复与防范 113
5.4.1 同源检测 ..114
5.4.2 Samesite Cookie 和 CSRTToken.114
5.4.3 特定情况下的必要验证 .116
项目六 安全的文件上传 .. 118
6.1 任务一:构造简单的文件上传 .119
6.1.1 什么是文件上传 .119
6.1.2 简单的文件上传 120
6.1.3 上传文件的方式 121
6.1.4 文件上传数据的存储 . 122
6.1.5 文件上传的三个阶段 . 123
6.2 任务二:文件上传漏洞 124
6.2.1 文件上传漏洞的原理 . 124
6.2.2 文件上传漏洞的危害 . 126
6.3 任务三:文件上传漏洞的类型 131
6.3.1 文件类型绕过漏洞 .. 131
6.3.2 文件名绕过漏洞 132
6.3.3 目录遍历漏洞 . 133
6.3.4 二进制文件上传漏洞 . 134
6.3.5 非常规后缀名漏洞 .. 135
6.3.6 内容欺骗漏洞 . 137
6.3.7 Web 服务器的负载均衡 138
6.4 任务四:文件上传漏洞的检测与验证 139
6.4.1 攻击业务流程 . 139
6.4.2 文件上传漏洞的检测流程 .. 140
6.4.3 文件上传漏洞的验证流程 .. 142
6.5 任务五:文件上传漏洞的修复与防范 145
项目七 安全的文件包含 .. 149
7.1 任务一:构造简单的文件包含 150
7.1.1 什么是文件包含 150
7.1.2 简单的文件包含 151
7.1.3 文件包含的业务流程 . 152
7.2 任务二:文件包含漏洞的原理 153
7.2.1 什么是文件包含漏洞 . 153
7.2.2 文件包含漏洞的类型 . 154
7.3 任务三:文件包含漏洞的检测与验证 154
7.3.1 文件包含漏洞的检测流程 .. 154
7.3.2 文件包含漏洞的验证流程 .. 155
7.4 任务四:文件包含漏洞的修复与防范 159
项目八 安全的应用发布 .. 162
8.1 任务一:生产环境搭建 163
8.1.1 LAMP 环境的快速搭建 163
8.1.2 部署博客管理系统 .. 178
8.2 任务二:Apache 安全配置 . 184
8.2.1 禁止目录浏览 . 184
8.2.2 隐藏服务器的头部信息 185
8.2.3 配置网站脚本的解析规则 .. 187
8.2.4 自定义错误页面 189
8.3 任务三:PHP 安全配置 190
8.3.1 关闭调试模式 . 190
8.3.2 配置 PHP 参数 192
8.4 任务四:MySQL 安全配置 194
8.4.1 配置 MySQL 参数 194
8.4.2 数据库用户降权 195
8.4.3 数据库访问控制 195
项目九 安全的 Web 防护体系建设. 197
9.1 任务一:确定安全设计和编码原则 . 198
9.1.1 Web 应用安全设计原则 198
9.1.2 Web 应用安全编码原则 204
9.2 任务二:建立基本的安全框架 .211
9.2.1 处理用户交互权限 211
9.2.2 处理用户输入参数 .. 212
9.2.3 确认用户应用边界 .. 213
9.2.4 处理流程规范化 213
9.3 任务三:实施安全的开发流程 214
9.3.1 SDL 简介 . 214
9.3.2 SDL 实战经验. 217
9.4 任务四:加固边界的安全防护 221
9.4.1 硬件 WAF 222
9.4.2 ModSecurity 225
9.4.3 防篡改软件 225
9.4.4 云防护系统 226
参考文献 . 228