新書推薦:
《
量子网络的构建与应用
》
售價:NT$
500.0
《
拍电影的热知识:126部影片里的创作技巧(全彩插图版)
》
售價:NT$
500.0
《
大唐名城:长安风华冠天下
》
售價:NT$
398.0
《
情绪传染(当代西方社会心理学名著译丛)
》
售價:NT$
403.0
《
中国年画 1950-1990 THE NEW CHINA: NEW YEAR PICTURE 英文版
》
售價:NT$
1100.0
《
革命与反革命:社会文化视野下的民国政治(近世中国丛书)
》
售價:NT$
435.0
《
画楼:《北洋画报》忆旧(年轮丛书)
》
售價:NT$
1573.0
《
大国脊梁:漫画版
》
售價:NT$
374.0
編輯推薦:
虽然有很多网络和IT安全方面的资源,但是直到现在,依然缺乏详细的现代Web应用程序安全相关的知识。这本实用的指南提供了攻防兼备的安全观念,软件工程师可以轻松学习和应用。
Salesforce的高级安全工程师Andrew Hoffman介绍了Web应用安全的三大支柱:侦察、攻击和防御。你将学习有效研究和分析现代Web应用程序的方法,包括那些你无法直接访问的应用程序。你还将学习如何使用的黑客技术来入侵Web应用。后,你将学到如何在自己的Web应用程序开发中采取缓解措施,以防止黑客攻击。
內容簡介:
探索困扰当今Web应用的常见漏洞。学习攻击者进行漏洞利用攻击所用的基本的黑客技术。构图和记录你无法直接访问的Web应用。开发并部署可以绕过常规防御机制的、定制的漏洞利用程序。制订并部署缓解措施,保护你的应用程序免受黑客攻击。将安全编码的实践融入到你的开发生命周期中。获取实用的技巧,帮助你提高Web应用程序的整体安全性。
關於作者:
Andrew Hoffman是Salesforce.com的高级安全工程师,负责多个JavaScript、Node.js和OSS团队的安全工作。他的专长是DOM和JavaScript安全漏洞深入研究。他曾与各大浏览器厂商,包括TC39和WHATWG(Web Hypertext Application Technology Working Group,负责设计即将推出的JavaScript和浏览器DOM版本的组织)合作过。
目錄 :
目录
前言 .1
第1 章 软件安全历程 .21
1.1 黑客的起源 . 21
1.2 Enigma 密码机,约1930 年 22
1.3 自动Enigma 密码破解,约1940 年 26
1.4 电话“Phreaking”,约1950 年 . 29
1.5 防Phreaking 技术,约1960 年 31
1.6 计算机黑客的起源,约1980 年 32
1.7 互联网的兴起,约2000 年 . 34
1.8 现时代的黑客,约2015 年之后 36
1.9 小结 40
部分 侦察
第2 章 Web 应用侦察简介 43
2.1 信息收集 43
2.2 Web 应用程序构图 46
2.3 小结 48
第3 章 现代Web 应用程序的结构 49
3.1 现代的与传统的Web 应用程序 49
3.2 REST API 52
3.3 JS 对象标记 55
3.4 JavaScript. 57
3.4.1 变量和作用域 58
3.4.2 函数 61
3.4.3 上下文 . 62
3.4.4 原型继承. 63
3.4.5 异步模型. 66
3.4.6 浏览器DOM . 69
3.5 SPA 框架 71
3.6 认证和授权系统 72
3.6.1 认证 73
3.6.2 授权 74
3.7 Web 服务器 . 74
3.8 服务器端数据库 76
3.9 客户端数据存储 77
3.10 小结 . 78
第4 章 寻找子域 79
4.1 单域多应用程序 79
4.2 浏览器内置的网络分析工具 80
4.3 公开信息利用 83
4.3.1 搜索引擎缓存 84
4.3.2 存档信息利用 86
4.3.3 社交媒体快照 88
4.4 域传送攻击 . 92
4.5 暴力破解子域 94
4.6 字典攻击 101
4.7 小结 . 103
第5 章 API 分析 105
5.1 端点探索 105
5.2 认证机制 109
5.3 端点的模型 111
5.3.1 常见模型 111
5.3.2 特定于应用的模型 112
5.4 小结 . 114
第6 章 识别第三方依赖 . 115
6.1 探测客户端框架 115
6.1.1 探测SPA 框架 116
6.1.2 探测JavaScript 库 118
6.1.3 探测CSS 库 120
6.2 探测服务器端框架 121
6.2.1 标头探测 121
6.2.2 默认错误信息和404 页面 122
6.2.3 探测数据库 . 125
6.3 小结 . 127
第7 章 定位应用架构中的薄弱点 128
7.1 安全架构与不安全架构的标志 129
7.2 多层安全机制 . 134
7.3 采纳和重构 135
7.4 小结 . 137
第8 章 部分总结 139
第二部分 攻击
第9 章 Web 应用入侵简介 143
9.1 黑客的心态 143
9.2 运用侦察 145
第10 章 XSS 攻击 147
10.1 XSS 的发现和利用 148
10.2 储存型XSS 152
10.3 反射型XSS 154
10.4 DOM 型XSS 157
10.5 突变型XSS 160
10.6 小结 162
第11 章 CSRF 攻击 . 163
11.1 查询参数篡改 164
11.2 替换GET 的有效载荷 169
11.3 针对POST 端点的CSRF 170
11.4 小结 172
第12 章 XXE 攻击 173
12.1 直接型XXE 174
12.2 间接型XXE 177
12.3 小结 179
第13 章 注入攻击 . 181
13.1 SQL 注入攻击 181
13.2 代码注入 . 186
13.3 命令注入 . 191
13.4 小结 195
第14 章 DoS 攻击 196
14.1 ReDoS(Regex DoS)攻击 197
14.2 逻辑DoS 攻击 . 200
14.3 DDoS(分布式DoS)攻击 204
14.4 小结 205
第15 章 第三方依赖漏洞利用 206
15.1 集成的方法 208
15.1.1 分支和复制 209
15.1.2 自托管的应用程序集成 . 210
15.1.3 源代码集成 211
15.2 软件包管理器 212
15.2.1 JavaScript 包管理器 . 212
15.2 2 Java 包管理器 . 214
15.2.3 其他语言的包管理器 215
15.3 CVE(公共漏洞和披露)数据库 216
15.4 小结 217
第16 章 第二部分总结 219
第三部分 防御
第17 章 现代Web 应用加固 223
17.1 防御性软件架构 224
17.2 全面的代码审查 225
17.3 漏洞发现 . 225
17.4 漏洞分析 . 226
17.5 漏洞管理 . 227
17.6 回归测试 . 228
17.7 缓解策略 . 228
17.8 应用侦察和攻击技术 229
第18 章 安全的应用架构 230
18.1 分析功能需求 231
18.2 认证和授权 232
18.2.1 SSL 和TLS 232
18.2.2 安全的凭证 234
18.2.3 散列凭证信息 . 235
18.2.4 2FA 认证 238
18.3 PII 和财务数据 239
18.4 搜索 240
18.5 小结 240
第19 章 代码安全审查 243
19.1 如何开始代码审查 . 244
19.2 原型漏洞与自定义逻辑漏洞 . 245
19.3 代码安全审查起步 . 247
19.4 安全编码的反面模式 249
19.4.1 黑名单 250
19.4.2 模板代码 251
19.4.3 默认信任反模式 252
19.4.4 客户端/ 服务器分离 252
19.5 小结 253
第20 章 漏洞发现 . 255
20.1 安全自动化 255
20.1.1 静态分析 256
20.1.2 动态分析 258
20.1.3 漏洞回归测试 . 259
20.2 责任披露计划 262
20.3 漏洞赏金计划 263
20.4 第三方渗透测试 264
20.5 小结 265
第21 章 漏洞管理 . 266
21.1 漏洞重现 . 266
21.2 漏洞严重等级 267
21.3 通用漏洞评分系统 . 268
21.3.1 CVSS:基础评分 . 269
21.3.2 CVSS:时间评分 . 271
21.3.3 CVSS:环境评分 . 272
21.4 高级漏洞评分 273
21.5 分拣、评分之后 274
21.6 小结 275
第22 章 防御XSS 攻击 . 276
22.1 防御XSS 编码实践 . 276
22.2 净化用户输入 279
22.2.1 DOM 解析接收器 . 280
22.2.2 SVG 接收器 . 281
22.2.3 Blob 接收器 . 281
22.2.4 超链接净化 282
22.2.5 HTML 实体编码 283
22.3 CSS 284
22.4 阻止XSS 的CSP 285
22.4.1 脚本源 285
22.4.2 Unsafe Eval 和Unsafe Inline 选项 287
22.4.3 实现CSP 288
22.5 小结 288
第23 章 防御CSRF 攻击 290
23.1 标头验证 . 290
23.2 CSRF 令牌 . 292
23.3 防CRSF 编码实践 294
23.3.1 无状态GET 请求 294
23.3.2 应用级CSRF 缓解 296
23.4 小结 297
第24 章 防御XXE 攻击 . 299
24.1 评估其他数据格式 . 300
24.2 高级XXE 风险 301
24.3 小结 302
第25 章 防御注入攻击 303
25.1 缓解SQL 注入攻击 303
25.1.1 SQL 注入检测 . 304
25.1.2 预编译语句 306
25.1.3 特定于数据库的防御 308
25.2 通用注入防御 308
25.2.1 潜在的注入目标 309
25.2.2 小权限原则 . 310
25.2.3 命令白名单化 . 311
25.3 小结 312
第26 章 防御DoS 攻击 . 314
26.1 防范Regex DoS 攻击 315
26.2 防范逻辑DoS 攻击 315
26.3 防范DDoS 攻击 . 316
26.4 缓解DDoS 攻击 . 317
26.5 小结 318
第27 章 加固第三方依赖 320
27.1 评估依赖关系树 320
27.1.1 依赖关系树建模 321
27.1.2 依赖关系树实例 322
27.1.3 自动评估 322
27.2 安全集成技术 323
27.2.1 关注点分离 323
27.2.2 安全包管理 324
27.3 小结 325
第28 章 第三部分小结 327
28.1 软件安全的历史 327
28.2 Web 应用侦察 329
28.3 攻击 331
28.4 防御 332
第29 章 总结 . 336
作者介绍 339
封面介绍 339
內容試閱 :
前言
欢迎阅读本书。在前言中,我们将讨论阅读和理解本书内容所需的基础知识。我们还将讨论学习目标,并尝试建立典型的读者“画像”,以便了解你是否将从这本书中受益。
如果不知道这本书是否适合你,或不确定通过你已有的专业知识背景能否掌握后续章节的内容,请在继续阅读第1 章之前仔细阅读前言中的内容。
必备的知识和学习目标
这本书不仅可以帮助你学习如何保护Web 应用程序免受黑客攻击,还可以引导你逐步了解黑客侦察和侵入Web 应用程序而采取的步骤。
在本书中,我们将讨论黑客如今所使用的许多技术,这些技术可用于入侵由公司、政府, 甚至业余爱好者托管的Web 应用程序。
在对前面提到的技术进行了充分的研究之后,我们开始讨论如何保护Web 应用程序,免受这些黑客的攻击。
在此过程中,你会发现全新的应用架构设计思维方式,还将学习到如何将安全实践整合到工程组织中。后,我们将对当前常见、危险的Web应用攻击类型和相关技术进行评估。
读完本书后,你所拥有的知识,可以对你没有代码级访问权限的应用程序进行安全侦察。
你还将能够识别Web 应用程序中的缺陷和漏洞,以及精心设计的、旨在破坏应用程序数据、中断执行流程或干扰Web 应用程序正常功能的网络行为。
掌握了这些技能,以及关于保护Web 应用程序的后一节中获得的知识,你将能够识别Web 应用程序代码库中的危险区域,并了解如何编写代码来防御可能产生的应用程序攻击,以使你的应用系统和用户远离风险。
本书的内容是循序渐进的,所以如果你选择跳过前面的内容,就会发现自己缺少必要的先决条件和信息,只需回溯几章的内容即可。
未经事先说明,不应在本书中出现本章内容中未定义为前提的任何主题。
建议的背景知识
本书面向的潜在读者范围很广,但是本书的编写风格以及书中示例的组织形式,使其成为具有软件工程中级背景知识人员的理想选择。
你可能会问,“软件工程中级背景”意味着什么?这个问题的答案因人而异。对技术高手而言,这本书实际上可能只需要“软件工程的入门级背景”。换句话说,之前具有Web 开发和/ 或脚本编写经验(如果足够的话)的系统管理员,可以流畅地阅读本书并理解所有示例。话虽如此,这本书中所含的代码编写示例既包括客户端,也包括服务器,仅仅了解其中一部分不足以深入理解这些示例。
本书还包括有关基于HTTP 的基本客户端/ 服务器联网的讨论。此外,在以后的章节中,我们会探讨有关软件体系结构的内容,我们将探究在降低安全风险的同时,将内部软件与第三方软件集成的方法。
由于本书涵盖了如此多的主题,因此我首先界定了所需的技能水平来成功完成本书的学习,即“中级”还是“入门级”,因为这本书不适合那些没有任何编写应用于生产环境的应用程序经验或知识的人。
技能要求
在这本书中,“软件工程中级背景”意味着:
? 你可以使用至少一种编程语言编写基本的 CRUD(Create、Read、Update、Delete,即创建、读取、更新、删除,俗称“增删查改”)程序。
? 你可以编写运行在服务器上的代码(例如后端代码)。
? 你至少可以编写一些在浏览器中运行的代码(前端代码,通常为JavaScript)。
? 你知道什么是 HTTP,并且能读懂,甚至编写通过 HTTP 进行 GET/POST调用的相关代码。
? 你可以编写,或至少能阅读并理解使用服务器端和客户端代码的应用程序,该应用程序通过HTTP 进行通信。
? 你至少熟悉一种流行的数据库(MySQL,MongoDB 等)。
这些技能是后续顺利阅读本书示例的标准。在这些要点之外的任何经验都会有帮助,这将使你更容易使用和从中获得学习价值。
为简便起见,本书中的大多数代码示例都是使用JavaScript 编写的(以便客户端和服务器代码使用相同的语言),但是大多数代码都可以毫不费力地应用于其他语言中。
我尽力合理组织本书中的主题,以使它们以易接受的进度来逐步增加难度。我也尝试在解释中尽可能地细致明了。这意味着,每当涉及一项新技术时,我都会先简要介绍一下该技术的简要背景,并概述其工作原理。
谁能从阅读本书中受益?
除了必备技能,我认为弄清谁将从本书中受益是很重要的,所以我想解释一下我的目标受众是谁。为此,根据学习目标和专业兴趣来组织本节。即使你不属于以下类别,仍然可以从本书中学习许多有价值,或至少感兴趣的概念。
这本书是为了经得起时间的考验而写的,因此,如果你以后打算从事下述目标读者群中的某项职业,那么本书中所有的专业知识都非常实用。
软件工程师和Web 应用程序开发人员
客观地说,这本书的主要读者是职业生涯处于初期到中期的软件工程师或Web 应用程序开发人员。理想情况下,该读者对深入了解黑客使用的攻击技术,或安全工程师用来对抗黑客的防御技术感兴趣。
一般来说,在本书的语境中,“Web 应用程序开发人员”和“软件工程师”这两个提法是可以互换的,考虑接下来的章节中这两个名称都会用到,为避免引起误解,故而首先澄清一下。
略