网站地图 | Tags | 热门标准 | 最新标准 | 订阅
您当前的位置:首页 > 行业图书 > 计算机与网络

软件供应链安全:源代码缺陷实例剖析 奇安信代码安全实验室 2021年版

  • 文件大小:12.02 MB
  • 标准类型:计算机与网络
  • 标准语言:中文版
  • 文件类型:PDF文档
  • 更新时间:2023-02-07
  • 下载次数
  • 标签

资料介绍

软件供应链安全:源代码缺陷实例剖析
作者:奇安信代码安全实验室
出版时间: 2021年版
内容简介
  源代码缺陷是指在软件开发生命周期的编码阶段,产生的有意或者无意的缺陷。为了便于读者更好地了解各种缺陷的基本特性,本书根据缺陷产生的原因、造成的结果以及表现形式等因素,将60种重要且常见缺陷分为3大类:输入验证类、资源管理类和代码质量类。全书分为4章,第1章概述了源代码缺陷的基本概念、发现缺陷的方法、自动化缺陷检测技术、缺陷处置流程、缺陷种类划分、代码审计工具、代码安全保障技术趋势;第2章至第4章通过具体实例依次介绍了各类缺陷的原理、危害、在代码中的表现形式及修复建议。本书适合有一定计算机编码基础和网络安全基础的读者阅读,也适合作为网络安全爱好者的参考书。
目录
目录
第1章 概述/t1
1.1 缺陷的基本概念/t1
1.2 发现缺陷的方法/t2
1.3 自动化缺陷检测技术/t4
1.4 缺陷处置流程/t5
1.5 缺陷种类划分/t6
1.5.1 输入验证类/t6
1.5.2 资源管理类/t8
1.5.3 代码质量类/t10
1.6 代码审计工具使用实例/t11
1.6.1 任务配置页面/t11
1.6.2 检测结果页面/t13
1.7 代码安全保障技术趋势前瞻/t14
1.7.1 基于人工智能技术的代码安全分析/t14
1.7.2 面向安全的软件代码成分分析/t15
1.7.3 面向DevSecOps的代码安全测试/t15
1.7.4 交互式应用安全测试/t16
第2章 输入验证类缺陷分析/t17
2.1 SQL注入/t17
2.1.1 SQL注入的概念/t17
2.1.2 SQL注入的危害/t17
2.1.3 实例代码/t18
2.1.4 如何避免SQL注入/t20
2.2 XML外部实体注入/t20
2.2.1 XML外部实体注入的概念/t20
2.2.2 XML外部实体注入的危害/t21
2.2.3 实例代码/t21
2.2.4 如何避免XML外部实体注入/t24
2.3 命令注入/t24
2.3.1 命令注入的概念/t24
2.3.2 命令注入的危害/t25
2.3.3 实例代码/t26
2.3.4 如何避免命令注入/t28
2.4 XPath注入/t28
2.4.1 XPath注入的概念/t28
2.4.2 XPath注入的危害/t28
2.4.3 实例代码/t29
2.4.4 如何避免XPath注入/t32
2.5 LDAP注入/t32
2.5.1 LDAP注入的概念/t32
2.5.2 LDAP注入的危害/t33
2.5.3 实例代码/t33
2.5.4 如何避免LDAP注入/t37
2.6 JSON注入/t37
2.6.1 JSON注入的概念/t37
2.6.2 JSON注入的危害/t38
2.6.3 实例代码/t38
2.6.4 如何避免JSON注入/t40
2.7 XQuery注入/t40
2.7.1 XQuery注入的概念/t40
2.7.2 XQuery注入的危害/t40
2.7.3 实例代码/t41
2.7.4 如何避免XQuery注入/t43
2.8 HTTP响应截断/t43
2.8.1 HTTP响应截断的概念/t43
2.8.2 HTTP响应截断的危害/t44
2.8.3 实例代码/t45
2.8.4 如何避免HTTP响应截断/t46
2.9 不安全的反序列化(XStream)/t46
2.9.1 不安全的反序列化(XStream)的概念/t46
2.9.2 不安全的反序列化(XStream)的危害/t46
2.9.3 实例代码/t47
2.9.4 如何避免不安全的反序列化(XStream)/t49
2.10 动态解析代码/t49
2.10.1 动态解析代码的概念/t49
2.10.2 动态解析代码的危害/t49
2.10.3 实例代码/t50
2.10.4 如何避免动态解析代码/t51
2.11 ContentProvider URI注入/t52
2.11.1 ContentProvider URI 注入的概念/t52
2.11.2 ContentProvider URI 注入的危害/t52
2.11.3 实例代码/t52
2.11.4 如何避免ContentProvider URI 注入/t54
2.12 反射型XSS/t54
2.12.1 反射型XSS的概念/t54
2.12.2 反射型XSS的危害/t55
2.12.3 实例代码/t56
2.12.4 如何避免反射型XSS/t57
2.13 存储型XSS/t58
2.13.1 存储型XSS的概念/t58
2.13.2 存储型XSS的危害/t58
2.13.3 实例代码/t59
2.13.4 如何避免存储型XSS/t61
2.14 弱验证/t62
2.14.1 弱验证的概念/t62
2.14.2 弱验证的危害/t62
2.14.3 实例代码/t63
2.14.4 如何避免弱验证/t65
2.15 组件间通信XSS/t66
2.15.1 组件间通信XSS的概念/t66
2.15.2 组件间通信XSS的危害/t66
2.15.3 实例代码/t67
2.15.4 如何避免组件间通信XSS/t68
2.16 进程控制/t69
2.16.1 进程控制的概念/t69
2.16.2 进程控制的危害/t69
2.16.3 实例代码/t70
2.16.4 如何避免进程控制/t72
2.17 路径遍历/t72
2.17.1 路径遍历的概念/t72
2.17.2 路径遍历的危害/t72
2.17.3 实例代码/t73
2.17.4 如何避免路径遍历/t75
2.18 重定向/t76
2.18.1 重定向的概念/t76
2.18.2 重定向的危害/t76
2.18.3 实例代码/t77
2.18.4 如何避免重定向/t79
2.19 日志伪造/t79
2.19.1 日志伪造的概念/t79
2.19.2 日志伪造的危害/t79
2.19.3 实例代码/t79
2.19.4 如何避免日志伪造/t81
第3章 资源管理类缺陷分析/t82
3.1 缓冲区上溢/t82
3.1.1 缓冲区上溢的概念/t82
3.1.2 缓冲区上溢的危害/t82
3.1.3 实例代码/t83
3.1.4 如何避免缓冲区上溢/t85
3.2 缓冲区下溢/t85
3.2.1 缓冲区下溢的概念/t85
3.2.2 缓冲区下溢的危害/t86
3.2.3 实例代码/t86
3.2.4 如何避免缓冲区下溢/t88
3.3 越界访问/t88
3.3.1 越界访问的概念/t88
3.3.2 越界访问的危害/t88
3.3.3 实例代码/t89
3.3.4 如何避免越界访问/t90
3.4 释放后使用/t91
3.4.1 释放后使用的概念/t91
3.4.2 释放后使用的危害/t91
3.4.3 实例代码/t92
3.4.4 如何避免释放后使用/t93
3.5 二次释放/t94
3.5.1 二次释放的概念/t94
3.5.2 二次释放的危害/t94
3.5.3 实例代码/t95
3.5.4 如何避免二次释放/t96
3.6 内存泄漏/t97
3.6.1 内存泄漏的概念/t97
3.6.2 内存泄漏的危害/t97
3.6.3 实例代码/t98
3.6.4 如何避免内存泄漏/t99
3.7 文件资源未释放/t99
3.7.1 文件资源未释放的概念/t99
3.7.2 文件资源未释放的危害/t99
3.7.3 实例代码/t100
3.7.4 如何避免文件资源未释放/t101
3.8 流资源未释放/t101
3.8.1 流资源未释放的概念/t101
3.8.2 流资源未释放的危害/t102
3.8.3 实例代码/t102
3.8.4 如何避免流资源未释放/t105
3.9 错误的资源关闭/t105
3.9.1 错误的资源关闭的概念/t105
3.9.2 错误的资源关闭的危害/t106
3.9.3 实例代码/t106
3.9.4 如何避免错误的资源关闭/t107
3.10 重复加锁/t107
3.10.1 重复加锁的概念/t107
3.10.2 重复加锁的危害/t108
3.10.3 实例代码/t108
3.10.4 如何避免重复加锁/t109
3.11 错误的内存释放对象/t110
3.11.1 错误的内存释放对象的概念/t110
3.11.2 错误的内存释放对象的危害/t110
3.11.3 实例代码/t111
3.11.4 如何避免错误的内存释放对象/t112
3.12 错误的内存释放方法/t113
3.12.1 错误的内存释放方法的概念/t113
3.12.2 错误的内存释放方法的危害/t113
3.12.3 实例代码/t114
3.12.4 如何避免错误的内存释放方法/t115
3.13 返回栈地址/t115
3.13.1 返回栈地址的概念/t115
3.13.2 返回栈地址的危害/t115
3.13.3 实例代码/t116
3.13.4 如何避免返回栈地址/t117
3.14 被污染的内存分配/t117
3.14.1 被污染的内存分配的概念/t117
3.14.2 被污染的内存分配的危害/t118
3.14.3 实例代码/t118
3.14.4 如何避免被污染的内存分配/t121
3.15 数据库访问控制/t122
3.15.1 数据库访问控制的概念/t122
3.15.2 数据库访问控制的危害/t122
3.15.3 实例代码/t122
3.15.4 如何避免数据库访问控制/t124
3.16 硬编码密码/t125
3.16.1 硬编码密码的概念/t125
3.16.2 硬编码密码的危害/t125
3.16.3 实例代码/t126
3.16.4 如何避免硬编码密码/t128
3.17 不安全的随机数/t128
3.17.1 不安全的随机数的概念/t128
3.17.2 不安全的随机数的危害/t129
3.17.3 实例代码/t129
3.17.4 如何避免不安全的随机数/t131
3.18 不安全的哈希算法/t131
3.18.1 不安全的哈希算法的概念/t131
3.18.2 不安全的哈希算法的危害/t132
3.18.3 实例代码/t132
3.18.4 如何避免不安全的哈希算法/t135
3.19 弱加密/t135
3.19.1 弱加密的概念/t135
3.19.2 弱加密的危害/t135
3.19.3 实例代码/t136
3.19.4 如何避免弱加密/t138
3.20 硬编码加密密钥/t139
3.20.1 硬编码加密密钥的概念/t139
3.20.2 硬编码加密密钥的危害/t139
3.20.3 实例代码/t139
3.20.4 如何避免硬编码加密密钥/t140
第4章 代码质量类缺陷分析/t141
4.1 有符号整数溢出/t141
4.1.1 有符号整数溢出的概念/t141
4.1.2 有符号整数溢出的危害/t141
4.1.3 实例代码/t142
4.1.4 如何避免有符号整数溢出/t143
4.2 无符号整数回绕/t144
4.2.1 无符号整数回绕的概念/t144
4.2.2 无符号整数回绕的危害/t144
4.2.3 实例代码/t145
4.2.4 如何避免无符号整数回绕/t146
4.3 空指针解引用/t147
4.3.1 空指针解引用的概念/t147
4.3.2 空指针解引用的危害/t147
4.3.3 实例代码/t148
4.3.4 如何避免空指针解引用/t149
4.4 解引用未初始化的指针/t149
4.4.1 解引用未初始化的指针的概念/t149
4.4.2 解引用未初始化的指针的危害/t149
4.4.3 实例代码/t150
4.4.4 如何避免解引用未初始化的指针/t151
4.5 除数为零/t151
4.5.1 除数为零的概念/t151
4.5.2 除数为零的危害/t152
4.5.3 实例代码/t152
4.5.4 如何避免除数为零/t154
4.6 在scanf()函数中没有对%s格式符进行宽度限制/t154
4.6.1 在scanf()函数中没有对%s格式符进行宽度限制的概念/t154
4.6.2 在scanf()函数中没有对%s格式符进行宽度限制的危害/t154
4.6.3 实例代码/t155
4.6.4 如何避免在scanf()函数中没有对%s格式符进行宽度限制/t156
4.7 被污染的格式化字符串/t157
4.7.1 被污染的格式化字符串的概念/t157
4.7.2 被污染的格式化字符串的危害/t157
4.7.3 实例代码/t158
4.7.4 如何避免被污染的格式化字符串/t160
4.8 不当的循环终止/t160
4.8.1 不当的循环终止的概念/t160
4.8.2 不当的循环终止的危害/t160
4.8.3 实例代码/t160
4.8.4 如何避免不当的循环终止/t162
4.9 双重检查锁定/t162
4.9.1 双重检查锁定的概念/t162
4.9.2 双重检查锁定的危害/t162
4.9.3 实例代码/t162
4.9.4 如何避免双重检查锁定/t165
4.10 未初始化值用于赋值操作/t165
4.10.1 未初始化值用于赋值操作的概念/t165
4.10.2 未初始化值用于赋值操作的危害/t165
4.10.3 实例代码/t166
4.10.4 如何避免未初始化值用于赋值操作/t167
4.11 参数未初始化/t167
4.11.1 参数未初始化的概念/t167
4.11.2 参数未初始化的危害/t168
4.11.3 实例代码/t168
4.11.4 如何避免参数未初始化/t169
4.12 返回值未初始化/t169
4.12.1 返回值未初始化的概念/t169
4.12.2 返回值未初始化的危害/t169
4.12.3 实例代码/t170
4.12.4 如何避免返回值未初始化/t170
4.13 Cookie:未经过SSL加密/t171
4.13.1 Cookie:未经过SSL加密的概念/t171
4.13.2 Cookie:未经过SSL加密的危害/t171
4.13.3 实例代码/t172
4.13.4 如何避免Cookie:未经过SSL加密/t174
4.14 邮件服务器建立未加密的连接/t174
4.14.1 邮件服务器建立未加密的连接的概念/t174
4.14.2 邮件服务器建立未加密的连接的危害/t174
4.14.3 实例代码/t175
4.14.4 如何避免邮件服务器建立未加密的连接/t176
4.15 不安全的SSL:过于广泛的信任证书/t176
4.15.1 不安全的SSL:过于广泛的信任证书的概念/t176
4.15.2 不安全的SSL:过于广泛的信任证书的危害/t177
4.15.3 实例代码/t177
4.15.4 如何避免不安全的SSL:过于广泛的信任证书/t179
4.16 Spring Boot配置错误:不安全的Actuator/t179
4.16.1 Spring Boot配置错误:不安全的Actuator的概念/t179
4.16.2 Spring Boot配置错误:不安全的Actuator的危害/t179
4.16.3 实例代码/t180
4.16.4 如何避免Spring Boot配置错误:不安全的Actuator/t180
4.17 未使用的局部变量/t181
4.17.1 未使用的局部变量的概念/t181
4.17.2 未使用的局部变量的危害/t181
4.17.3 实例代码/t181
4.17.4 如何避免未使用的局部变量/t182
4.18 死代码/t182
4.18.1 死代码的概念/t182
4.18.2 死代码的危害/t183
4.18.3 实例代码/t183
4.18.4 如何避免死代码/t184
4.19 函数调用时参数不匹配/t184
4.19.1 函数调用时参数不匹配的概念/t184
4.19.2 函数调用时参数不匹配的危害/t184
4.19.3 实例代码/t184
4.19.4 如何避免函数调用时参数不匹配/t186
4.20 不当的函数地址使用/t186
4.20.1 不当的函数地址使用的概念/t186
4.20.2 不当的函数地址使用的危害/t186
4.20.3 实例代码/t186
4.20.4 如何避免不当的函数地址使用/t188
4.21 忽略返回值/t188
4.21.1 忽略返回值的概念/t188
4.21.2 忽略返回值的危害/t188
4.21.3 实例代码/t189
4.21.4 如何避免忽略返回值/t190

下载说明

关于本站 | 联系我们 | 下载帮助 | 下载声明 | 信息反馈 | 网站地图