Web应用程序安全(第二版)
Web应用程序安全(第二版)
Andrew Hoffman
卢浩, 陈新, 张林锋 译
出版时间:2025年07月
页数:465
“全面而且实用的Web应用程序安全资料。”
——Chetan Karande
OWASP项目负责人
“Hoffman的这本书内容全面、条理清晰,内容既包含如何攻击Web应用程序,也阐述了如何对其进行防御。该书的技术含量很高,不仅能让软件开发人员受益匪浅,同时,这些概念对非专业读者来说也非常容易理解。”
——Caroline Wong
Cobalt首席战略官
在广受好评的本书第一版中,作者定义了Web应用程序安全的三大支柱:侦察、进攻和防御。在更新后的第二版中,探讨了数十个相关主题,包括最新的攻击类型及其缓解措施,以及威胁建模、安全软件开发生命周期(SSDL/SDLC)和零信任架构等。
第二版中还增加了针对其他Web应用程序技术,例如GraphQL、基于云的部署和内容分发网络(CDN)的漏洞利用方法及相应的缓解措施。在这一版攻击和缓解相关的章节中,包含了更多高级技术,有经验的读者将收获更多。
本书第二版同样由三大支柱构成,包含以下三方面的内容:
● 支柱1:侦查,学习如何远程收集Web应用程序的信息,包括获取安全敏感配置数据的方法等。
● 支柱2:进攻,探究使用已被全球顶尖黑客证明有效、用以攻击Web应用程序的多种漏洞利用方法。
● 支柱3:防御,在上述技能的基础上,针对支柱2中描述的每种攻击方法构建有效、持久的缓解措施,以及如何安全地开发和部署Web应用程序。
  1. 前言
  2. 第1章 软件安全发展历程
  3. 1.1 黑客的起源
  4. 1.2 Enigma密码机,约1930年
  5. 1.3 Enigma密码破解,约1940年
  6. 1.4 电话Phreaking,约1950年
  7. 1.5 防Phreaking,约1960年
  8. 1.6 计算机黑客,起源于约1980年
  9. 1.7 万维网兴起,约2000年
  10. 1.8 当代黑客,约2015年之后
  11. 1.9 小结
  12. 第一部分 侦查
  13. 第2章 Web应用程序侦查简介
  14. 2.1 信息收集
  15. 2.2 绘制Web应用程序图
  16. 2.3 小结
  17. 第3章 现代Web应用程序结构
  18. 3.1 Web应用程序的发展
  19. 3.2 REST API
  20. 3.3 JSON
  21. 3.4 JavaScript
  22. 3.4.1 变量和作用域
  23. 3.4.2 函数
  24. 3.4.3 上下文
  25. 3.4.4 原型继承
  26. 3.4.5 异步模型
  27. 3.4.6 浏览器DOM
  28. 3.5 SPA框架
  29. 3.6 认证和授权系统
  30. 3.6.1 认证
  31. 3.6.2 授权
  32. 3.7 Web服务器
  33. 3.8 服务器端数据库
  34. 3.9 客户端数据存储
  35. 3.10 GraphQL
  36. 3.11 版本控制系统
  37. 3.12 CDN/Cache
  38. 3.13 小结
  39. 第4章 寻找子域
  40. 4.1 单域多个应用程序
  41. 4.2 浏览器内置的网络分析工具
  42. 4.3 利用公共信息
  43. 4.3.1 搜索引擎缓存
  44. 4.3.2 利用存档信息
  45. 4.3.3 社交媒体快照
  46. 4.4 DNS区域传送攻击
  47. 4.5 暴力破解子域
  48. 4.6 字典攻击
  49. 4.7 小结
  50. 第5章 API分析
  51. 5.1 端点探索
  52. 5.2 认证机制
  53. 5.3 端点结构
  54. 5.3.1 常用结构
  55. 5.3.2 特殊结构
  56. 5.4 小结
  57. 第6章 识别第三方依赖
  58. 6.1 探测客户端框架
  59. 6.1.1 探测SPA框架
  60. 6.1.2 探测JavaScript库
  61. 6.1.3 探测CSS库
  62. 6.2 探测服务器端框架
  63. 6.2.1 标头探测
  64. 6.2.2 默认错误信息及404页面
  65. 6.2.3 数据库探测
  66. 6.3 小结
  67. 第7章 应用程序架构安全
  68. 7.1 架构安全判别
  69. 7.2 多层安全保障
  70. 7.3 复用与重构
  71. 7.4 小结
  72. 第8章 第一部分总结
  73. 第二部分 攻击
  74. 第9章 Web应用程序攻击入门
  75. 9.1 黑客思维
  76. 9.2 运用侦查
  77. 第10章 XSS攻击
  78. 10.1 寻找和利用XSS
  79. 10.2 存储型XSS
  80. 10.3 反射型XSS
  81. 10.4 DOM型XSS
  82. 10.5 突变型XSS
  83. 10.6 绕过XSS过滤器
  84. 10.6.1 自闭合HTML标签
  85. 10.6.2 协议相关URL
  86. 10.6.3 畸形标签
  87. 10.6.4 编码转义
  88. 10.6.5 通用攻击载荷
  89. 10.7 XSS接收器和源
  90. 10.8 小结
  91. 第11章 CSRF攻击
  92. 11.1 查询参数篡改
  93. 11.2 替换GET载荷
  94. 11.3 针对POST端点的CSRF
  95. 11.4 绕过CSRF防御
  96. 11.4.1 标头验证
  97. 11.4.2 令牌池
  98. 11.4.3 弱令牌
  99. 11.4.4 数据类型
  100. 11.4.5 绕过正则表达式过滤
  101. 11.4.6 iframe载荷
  102. 11.4.7 AJAX载荷
  103. 11.4.8 零交互表单
  104. 11.5 小结
  105. 第12章 XEE攻击
  106. 12.1 XXE基本概念
  107. 12.2 直接型XXE
  108. 12.3 间接型XXE
  109. 12.4 带外数据渗漏
  110. 12.5 账户接管流程
  111. 12.5.1 获取系统用户信息
  112. 12.5.2 获取密码散列值
  113. 12.5.3 破解密码散列值
  114. 12.5.4 SSH远程登录
  115. 12.6 小结
  116. 第13章 注入攻击
  117. 13.1 SQL注入
  118. 13.2 代码注入
  119. 13.3 命令注入
  120. 13.4 注入式数据渗漏
  121. 13.4.1 数据渗漏的基本概念
  122. 13.4.2 带内数据渗漏
  123. 13.4.3 带外数据渗漏
  124. 13.4.4 推理式数据渗漏
  125. 13.5 绕过常见防御
  126. 13.6 小结
  127. 第14章 DoS攻击
  128. 14.1 Regex DoS攻击
  129. 14.2 逻辑DoS攻击
  130. 14.3 DDoS攻击
  131. 14.4 高级DoS攻击
  132. 14.4.1 YoYo攻击
  133. 14.4.2 压缩攻击
  134. 14.4.3 基于代理的DoS
  135. 14.5 小结
  136. 第15章 攻击数据和对象
  137. 15.1 大规模赋值攻击
  138. 15.2 不安全的直接对象引用
  139. 15.3 序列化攻击
  140. 15.3.1 Web序列化
  141. 15.3.2 攻击弱序列化
  142. 15.4 小结
  143. 第16章 客户端攻击
  144. 16.1 浏览器攻击
  145. 16.1.1 客户端定向攻击
  146. 16.1.2 特定客户端攻击
  147. 16.2 客户端攻击的优势
  148. 16.3 原型污染攻击
  149. 16.3.1 理解原型污染
  150. 16.3.2 原型污染攻击
  151. 16.3.3 原型污染应用
  152. 16.4 点击劫持攻击
  153. 16.4.1 摄像头及麦克风攻击
  154. 16.4.2 实施点击劫持攻击
  155. 16.5 标签劫持和反向标签劫持
  156. 16.5.1 传统标签劫持
  157. 16.5.2 反向标签劫持
  158. 16.6 小结
  159. 第17章 第三方依赖漏洞利用
  160. 17.1 集成的方法
  161. 17.1.1 分支与复刻
  162. 17.1.2 自托管应用程序集成
  163. 17.1.3 源代码集成
  164. 17.2 软件包管理器
  165. 17.2.1 JavaScript包管理器
  166. 17.2.2 Java包管理器
  167. 17.2.3 其他包管理器
  168. 17.3 CVE数据库
  169. 17.4 小结
  170. 第18章 业务逻辑漏洞利用
  171. 18.1 数学漏洞
  172. 18.2 编程副作用
  173. 18.3 准现金攻击
  174. 18.4 受影响的标准规范
  175. 18.5 业务逻辑漏洞利用
  176. 18.6 小结
  177. 第19章 第二部分总结
  178. 第三部分 防御
  179. 第20章 Web应用程序防护
  180. 20.1 防御性软件架构
  181. 20.2 全面代码审查
  182. 20.3 寻找漏洞
  183. 20.4 漏洞分析
  184. 20.5 漏洞管理
  185. 20.6 回归测试
  186. 20.7 缓解策略
  187. 20.8 应用侦查和攻击技术
  188. 20.9 小结
  189. 第21章 安全的应用程序架构
  190. 21.1 分析功能需求
  191. 21.2 认证和授权
  192. 21.2.1 SSL和TLS
  193. 21.2.2 密码安全
  194. 21.2.3 散列密码
  195. 21.2.4 多因子认证
  196. 21.3 个人信息和财务数据
  197. 21.4 搜索引擎
  198. 21.5 零信任架构
  199. 21.5.1 零信任的由来
  200. 21.5.2 隐性信任与显性信任
  201. 21.5.3 认证和授权
  202. 21.6 小结
  203. 第22章 安全的应用程序配置
  204. 22.1 内容安全策略(CSP)
  205. 22.1.1 实施CSP
  206. 22.1.2 CSP结构
  207. 22.1.3 主要指令
  208. 22.1.4 CSP源和源列表
  209. 22.1.5 严格的CSP
  210. 22.1.6 安全的CSP策略示例
  211. 22.2 跨域资源共享(CORS)
  212. 22.2.1 CORS请求类型
  213. 22.2.2 简单跨域请求
  214. 22.2.3 预检跨域请求
  215. 22.2.4 实施CORS
  216. 22.3 标头
  217. 22.3.1 严格传输安全
  218. 22.3.2 跨域开放策略(COOP)
  219. 22.3.3 跨域资源策略(CORP)
  220. 22.3.4 安全相关的标头
  221. 22.3.5 早期的安全标头
  222. 22.4 cookie
  223. 22.4.1 cookie安全
  224. 22.4.2 测试cookie
  225. 22.5 框架和沙盒
  226. 22.5.1 传统iframe
  227. 22.5.2 Web Worker
  228. 22.5.3 子资源完整性
  229. 22.5.4 阴影区
  230. 22.6 小结
  231. 第23章 安全的用户体验
  232. 23.1 信息泄露和枚举
  233. 23.1.1 信息泄露
  234. 23.1.2 枚举
  235. 23.2 安全用户体验最佳实践
  236. 23.3 小结
  237. 第24章 应用程序威胁建模
  238. 24.1 设计有效的威胁模型
  239. 24.2 威胁建模示例
  240. 24.2.1 逻辑设计
  241. 24.2.2 技术设计
  242. 24.2.3 威胁识别(威胁行为者)
  243. 24.2.4 威胁识别(攻击向量)
  244. 24.2.5 确定缓解措施
  245. 24.2.6 差异识别
  246. 24.3 小结
  247. 第25章 代码安全审查
  248. 25.1 如何开始代码审查
  249. 25.2 原型漏洞与业务逻辑漏洞
  250. 25.3 从何处开始审查
  251. 25.4 安全编码反模式
  252. 25.4.1 黑名单
  253. 25.4.2 样板代码
  254. 25.4.3 默认信任
  255. 25.4.4 客户端/服务器分离
  256. 25.5 小结
  257. 第26章 漏洞发现
  258. 26.1 安全自动化
  259. 26.1.1 静态分析
  260. 26.1.2 动态分析
  261. 26.1.3 漏洞回归测试
  262. 26.2 责任披露计划
  263. 26.3 漏洞赏金计划
  264. 26.4 第三方渗透测试
  265. 26.5 小结
  266. 第27章 漏洞管理
  267. 27.1 漏洞复现
  268. 27.2 漏洞严重性等级
  269. 27.3 通用漏洞评分系统
  270. 27.3.1 CVSS:基础评分
  271. 27.3.2 CVSS:时间评分
  272. 27.3.3 CVSS:环境评分
  273. 27.4 高级漏洞评分
  274. 27.5 漏洞修复
  275. 27.6 小结
  276. 第28章 防范XSS攻击
  277. 28.1 防范XSS编码最佳实践
  278. 28.2 用户输入检查
  279. 28.2.1 DOMParser接收器
  280. 28.2.2 SVG接收器
  281. 28.2.3 blob接收器
  282. 28.2.4 超链接检查
  283. 28.2.5 HTML实体编码
  284. 28.3 CSS XSS
  285. 28.4 防范XSS的CSP
  286. 28.4.1 脚本来源
  287. 28.4.2 不安全的eval和inline
  288. 28.4.3 实施CSP
  289. 28.5 小结
  290. 第29章 防范CSRF攻击
  291. 29.1 标头验证
  292. 29.2 CSRF令牌
  293. 29.3 防范CRSF编码最佳实践
  294. 29.3.1 无状态GET请求
  295. 29.3.2 应用程序级CSRF缓解
  296. 29.4 小结
  297. 第30章 防范XXE攻击
  298. 30.1 评估其他数据格式
  299. 30.2 高级XXE风险
  300. 30.3 小结
  301. 第31章 防范注入攻击
  302. 31.1 缓解SQL注入攻击
  303. 31.1.1 SQL注入检测
  304. 31.1.2 预编译语句
  305. 31.1.3 特定数据库防护
  306. 31.2 通用注入防御
  307. 31.2.1 潜在注入目标
  308. 31.2.2 最小权限原则
  309. 31.2.3 命令白名单
  310. 31.3 小结
  311. 第32章 防范DoS攻击
  312. 32.1 防范Regex DoS
  313. 32.2 防范逻辑DoS
  314. 32.3 防范DDoS
  315. 32.4 小结
  316. 第33章 保护数据和对象
  317. 33.1 防范大规模赋值
  318. 33.1.1 验证和白名单
  319. 33.1.2 数据传输对象
  320. 33.2 防范IDOR
  321. 33.3 防范序列化攻击
  322. 33.4 小结
  323. 第34章 防范客户端攻击
  324. 34.1 防范原型污染
  325. 34.1.1 键过滤
  326. 34.1.2 原型冻结
  327. 34.1.3 空原型
  328. 34.2 防范点击劫持
  329. 34.2.1 框架祖先
  330. 34.2.2 防框架嵌入
  331. 34.3 防范标签劫持
  332. 34.3.1 跨域开放策略
  333. 34.3.2 链接拦截器
  334. 34.4 隔离策略
  335. 34.5 小结
  336. 第35章 保护第三方依赖
  337. 35.1 评估依赖关系树
  338. 35.1.1 依赖关系树建模
  339. 35.1.2 依赖关系树示例
  340. 35.1.3 自动评估
  341. 35.2 安全的集成技术
  342. 35.2.1 分离关注点
  343. 35.2.2 安全的包管理
  344. 35.3 小结
  345. 第36章 防范业务逻辑漏洞
  346. 36.1 架构级缓解措施
  347. 36.2 统计建模
  348. 36.2.1 输入建模
  349. 36.2.2 操作建模
  350. 36.2.3 模型开发
  351. 36.2.4 模型分析
  352. 36.3 小结
  353. 第37章 第三部分总结
  354. 结论
书名:Web应用程序安全(第二版)
作者:Andrew Hoffman
译者:卢浩, 陈新, 张林锋 译
国内出版社:中国电力出版社
出版时间:2025年07月
页数:465
书号:978-7-5198-9962-2
原版书书名:Web Application Security, 2nd Edition
原版书出版商:O'Reilly Media
Andrew Hoffman
 
Andrew Hoffman是Salesforce.com的高级安全工程师,负责多个JavaScript、Node.js和OSS团队的安全工作。他的专长是DOM和JavaScript安全漏洞深入研究。他曾与各大浏览器厂商,包括TC39和WHATWG(Web Hypertext Application Technology Working Group,负责设计即将推出的 JavaScript和浏览器DOM版本的组织)合作过。
Andrew Hoffman是Ripple(瑞波,一家专注于为金融机构提供解决方案的区块链技术公司)公司的高级安全工程师,在软件工程和Web应用程序安全方面拥有独特的技能。他曾为《财富》500强企业和初创公司提供咨询,并曾与各大主流浏览器厂家合作。
 
 
本书封面上的动物是一只爱斯基摩犬,也称为因纽特犬、加拿大爱斯基摩犬,或因纽特爱斯基摩犬,与格陵兰犬有着相同的基因。无论是什么品种,所有的犬类都有一个相同的物种名称——家犬。爱斯基摩犬是北美最古老的犬种之一,据说最早出现在一万多年以前,它们由灰狼进化而来。
为了适应北极地区的生活环境,爱斯基摩犬有着非常厚的双层皮毛,外层是防水层。爱斯基摩犬有着直立的耳朵和卷曲的尾巴,其外形与另一种耐寒工作犬——众所周知的哈士奇相似。爱斯基摩犬奔跑的速度赶不上哈士奇,但它们有强壮的脖子、宽阔的肩膀、矫健的步伐,和令人钦羡的耐力,是拉雪橇和狩猎的理想选择。爱斯基摩犬的体重介于20~90磅之间,身高大约24~29英寸,它们的平均寿命为12~14岁,以高蛋白食物为生,通常以海豹、海象和驯鹿为食。
爱斯基摩犬的数量非常少,但近些年的保护工作使得该物种的生存状况得到了改善。
购买选项
定价:128.00元
书号:978-7-5198-9962-2
出版社:中国电力出版社