定 價(jià):149 元
叢書名:網(wǎng)絡(luò)空間安全技術(shù)叢書
- 作者:[美]尼爾·馬登(Neil Madden) 著
- 出版時(shí)間:2022/7/1
- ISBN:9787111707745
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP393.08
- 頁碼:475
- 紙張:
- 版次:
- 開本:16
本書旨在引導(dǎo)讀者掌握在不同環(huán)境下確保API安全所需的技術(shù)。首先介紹基本的安全編碼技術(shù),之后深入研究身份認(rèn)證和授權(quán)技術(shù)。全書共5部分,13章,其中:第1部分介紹了API安全的基本原理,是本書其余內(nèi)容的基礎(chǔ);第2部分更詳細(xì)地介紹RESTful API的身份驗(yàn)證機(jī)制;第3部分介紹了授權(quán)(authorization)相關(guān)的內(nèi)容;第4部分深入探討了如何確保運(yùn)行在Kubernetes環(huán)境下的微服務(wù)API的安全性;第5部分介紹物聯(lián)網(wǎng)(IoT)中的API。這類API的安全尤其有挑戰(zhàn)性,因?yàn)槲锫?lián)網(wǎng)設(shè)備的能力往往很有限,并且會遭遇到各種各樣的威脅。對于構(gòu)建Web程序有一定經(jīng)驗(yàn)的開發(fā)人員來講,本書可以提高他們對API安全技術(shù)和zui佳實(shí)踐的了解,也有助于技術(shù)架構(gòu)師緊跟zui新API安全方法技術(shù)更新的步伐。
譯者序
前言
致謝
關(guān)于本書
關(guān)于作者
第一部分 基礎(chǔ)
第1章 什么是API安全 2
1.1 打個(gè)比方:參加駕照考試 3
1.2 什么是API 4
1.3 API安全上下文 6
1.4 API安全要素 10
1.4.1 資產(chǎn) 11
1.4.2 安全目標(biāo) 11
1.4.3 環(huán)境與威脅模型 13
1.5 安全機(jī)制 15
1.5.1 加密 16
1.5.2 身份識別和身份驗(yàn)證 17
1.5.3 訪問控制和授權(quán) 18
1.5.4 審計(jì)日志 19
1.5.5 速率限制 20
小測驗(yàn)答案 21
小結(jié) 21
第2章 安全API開發(fā) 22
2.1 Natter API 22
2.1.1 Natter API概覽 23
2.1.2 功能實(shí)現(xiàn)概覽 24
2.1.3 設(shè)置項(xiàng)目 25
2.1.4 初始化數(shù)據(jù)庫 26
2.2 開發(fā)REST API 28
2.3 連接REST終端 31
2.4 注入攻擊 33
2.4.1 防御注入攻擊 37
2.4.2 使用權(quán)限緩解SQL注入攻擊 39
2.5 輸入驗(yàn)證 40
2.6 生成安全的輸出 45
2.6.1 利用XSS攻擊 47
2.6.2 防御XSS攻擊 49
2.6.3 實(shí)施防護(hù) 50
小測驗(yàn)答案 52
小結(jié) 53
第3章 加固N(yùn)atter API 54
3.1 使用安全控制來處置威脅 54
3.2 速率限制解決可用性 55
3.3 使用身份驗(yàn)證抵御欺騙 61
3.3.1 HTTP基本身份驗(yàn)證 62
3.3.2 使用Scrypt確保密碼安全存儲 62
3.3.3 創(chuàng)建密碼數(shù)據(jù)庫 63
3.3.4 在Natter API中注冊用戶 64
3.3.5 驗(yàn)證用戶 66
3.4 使用加密確保數(shù)據(jù)不公開 68
3.4.1 啟用HTTPS 70
3.4.2 加強(qiáng)數(shù)據(jù)傳輸安全 71
3.5 使用審計(jì)日志問責(zé) 72
3.6 訪問控制 77
3.6.1 強(qiáng)制身份驗(yàn)證 78
3.6.2 訪問控制列表 79
3.6.3 Natter的強(qiáng)制訪問控制 81
3.6.4 Natter空間增加新成員 83
3.6.5 避免提權(quán)攻擊 84
小測驗(yàn)答案 85
小結(jié) 85
第二部分 基于令牌的身份驗(yàn)證
第4章 會話Cookie驗(yàn)證 88
4.1 Web瀏覽器的身份驗(yàn)證 88
4.1.1 在JavaScript中調(diào)用Natter API 89
4.1.2 表單提交攔截 91
4.1.3 提供同源HTML服務(wù) 91
4.1.4 HTTP認(rèn)證的缺點(diǎn) 94
4.2 基于令牌的身份驗(yàn)證 95
4.2.1 令牌存儲抽象 97
4.2.2 基于令牌登錄的實(shí)現(xiàn) 98
4.3 Session Cookie 100
4.3.1 防范會話固定攻擊 103
4.3.2 Cookie安全屬性 105
4.3.3 驗(yàn)證會話Cookie 107
4.4 防范跨站請求偽造攻擊 109
4.4.1 SameSite Cookie 111
4.4.2 基于哈希計(jì)算的雙重提交Cookie 113
4.4.3 在Natter API中應(yīng)用雙重提交Cookie 116
4.5 構(gòu)建Natter登錄UI 121
4.6 實(shí)現(xiàn)注銷 125
小測驗(yàn)答案 127
小結(jié) 127
第5章 最新的基于令牌的身份驗(yàn)證 128
5.1 使用CORS允許跨域請求 128
5.1.1 預(yù)檢請求 129
5.1.2 CORS頭 131
5.1.3 在Natter API中添加CORS頭部 132
5.2 不使用Cookie的令牌 135
5.2.1 在數(shù)據(jù)庫中保存令牌的狀態(tài) 136
5.2.2 Bearer身份驗(yàn)證方案 141
5.2.3 刪除過期令牌 143
5.2.4 在Web存儲中存儲令牌 143
5.2.5 修改CORS過濾器 146
5.2.6 對Web存儲的XSS攻擊 147
5.3 加固數(shù)據(jù)庫令牌存儲 149
5.3.1 對數(shù)據(jù)庫令牌進(jìn)行哈希計(jì)算 150
5.3.2 使用HMAC驗(yàn)證令牌 151
5.3.3 保護(hù)敏感屬性 156
小測驗(yàn)答案 158
小結(jié) 159
第6章 自包含令牌和JWT 160
6.1 在客戶端存儲令牌狀態(tài) 160
6.2 JSON Web令牌 163
6.2.1 標(biāo)準(zhǔn)JWT聲明 165
6.2.2 JOSE頭部 166
6.2.3 生成標(biāo)準(zhǔn)的JWT 168
6.2.4 驗(yàn)證簽名JWT 171
6.3 加密敏感屬性 172
6.3.1 認(rèn)證加密 173
6.3.2 NaCl認(rèn)證加密 175
6.3.3 加密JWT 177
6.3.4 使用JWT庫 180
6.4 使用安全類型來加固API設(shè)計(jì) 183
6.5 處理令牌撤銷 185
小測驗(yàn)答案 189
小結(jié) 189
第三部分 授權(quán)
第7章 OAuth2和OpenID Connect 192
7.1 作用域令牌 193
7.1.1 在Natter中添加作用域令牌 193
7.1.2 作用域和權(quán)限之間的區(qū)別 197
7.2 OAuth2簡介 200
7.2.1 客戶端類型 201
7.2.2 授權(quán)許可 201
7.2.3 發(fā)現(xiàn)OAuth2終端 203
7.3 授權(quán)碼許可 204
7.3.1 重定向不同類型客戶端的URI 208
7.3.2 使用PKCE增強(qiáng)授權(quán)碼交換安全性 209
7.3.3 刷新令牌 210
7.4 驗(yàn)證訪問令牌 211
7.4.1 令牌自省 212
7.4.2 確保HTTPS客戶端配置安全 217
7.4.3 令牌撤銷 219
7.4.4 JWT訪問令牌 221
7.4.5 加密JWT訪問令牌 227
7.4.6 讓AS解密令牌 228
7.5 單點(diǎn)登錄 229
7.6 OpenID Connect 230
7.6.1 ID令牌 231
7.6.2 加固OIDC 232
7.6.3 向API傳遞ID令牌 233
小測驗(yàn)答案 235
小結(jié) 235
第8章 基于身份的訪問控制 237
8.1 用戶和組 237
8.2 基于角色的訪問控制 243
8.2.1 角色映射權(quán)限 244
8.2.2 靜態(tài)角色 245
8.2.3 確定用戶角色 247
8.2.4 動態(tài)角色 248
8.3 基于屬性的訪問控制 249
8.3.1 組合決策 251
8.3.2 實(shí)現(xiàn)ABAC策略 252
8.3.3 策略代理和API網(wǎng)關(guān) 256
8.3.4 分布式策略實(shí)施和XACML 257
8.3.5 ABAC最佳實(shí)踐 258
小測驗(yàn)答案 260
小結(jié) 260
第9章 基于能力的安全和Macaroon 261
9.1 基于能力的安全 261
9.2 能力和REST API 263
9.2.1 能力URI 265
9.2.2 在Natter API中使用能力URI 268
9.2.3 HATEOAS 272
9.2.4 基于瀏覽器客戶端的能力URI 276
9.2.5 能力與身份相結(jié)合 278
9.2.6 加固能力URI 279
9.3 Macaroon:含有caveat的令牌 282
9.3.1 上下文caveat 284
9.3.2 Macaroon令牌存儲 285
9.3.3 第一方caveat 288
9.3.4 第三方caveat 291
小測驗(yàn)答案 293
小結(jié) 293
第四部分 Kubernetes中的微服務(wù)API及服務(wù)到服務(wù)API的安全
第10章 Kubernetes中的微服務(wù)API 296
10.1 Kubernetes上的微服務(wù)API 297
10.2 在Kubernetes上部署Natter API 300
10.2.1 將H2數(shù)據(jù)庫構(gòu)建為Docker容器 301
10.2.2 將數(shù)據(jù)庫部署到Kubernetes 305
10.2.3 將Natter API構(gòu)建為Docker容器 309
10.2.4 鏈接預(yù)覽微服務(wù) 313
10.2.5 部署新的微服務(wù) 315
10.2.6 調(diào)用鏈接預(yù)覽微服務(wù) 317
10.2.7 防范SSRF攻擊 320
10.2.8 DNS重綁定攻擊 325
10.3 確保微服務(wù)通信安全 327
10.3.1 使用TLS來保證通信安全 327
10.3.2 使用TLS服務(wù)網(wǎng)格 329
10.3.3 鎖定網(wǎng)絡(luò)連接 333
10.4 確保輸入請求的安全性 335
小測驗(yàn)答案 339
小結(jié) 339
第11章 服務(wù)到服務(wù)API的安全 340
11.1 API密鑰和JWT Bearer身份驗(yàn)證 340
11.2 OAuth2客戶端憑證許可 342
11.3 OAuth2的JWT Bearer許可 345
11.3.1 客戶端驗(yàn)證 346
11.3.2 生成JWT 349
11.3.3 服務(wù)賬戶身份驗(yàn)證 351
11.4 Mutual TLS驗(yàn)證 352
11.4.1 TLS證書認(rèn)證的工作原理 352
11.4.2 客戶端證書驗(yàn)證 355
11.4.3 驗(yàn)證客戶端標(biāo)識 356
11.4.4 使用服務(wù)網(wǎng)格 361
11.4.5 基于OAuth2的mTLS 363
11.4.6 證書綁定訪問令牌 364
11.5 管理服務(wù)憑證 368
11.5.1 Kubernets secret 369
11.5.2 密鑰和secret管理服務(wù) 373
11.5.3 避免在磁盤上保存長生命周期的secret 376
11.5.4 派生密鑰 377
11.6 響應(yīng)用戶請求的服務(wù)API調(diào)用 381
11.6.1 phantom憑證模式 381
11.6.2 OAuth2令牌交換 383
小測驗(yàn)答案 386
小結(jié) 387
第五部分 用于物聯(lián)網(wǎng)的API
第12章 物聯(lián)網(wǎng)通信安全 390
12.1 傳輸層安全 391
12.1.1 數(shù)據(jù)報(bào)TLS 392
12.1.2 受限設(shè)備的密碼套件 402
12.2 預(yù)共享密鑰 407
12.2.1 實(shí)現(xiàn)一個(gè)PSK服務(wù)器 408
12.2.2 PSK客戶端 411
12.2.3 支持原始PSK密碼套件 412
12.2.4 具有前向保密性的PSK 413
12.3 端到端安全 415
12.3.1 COSE 416
12.3.2 COSE的替代方案 420
12.3.3 防濫用認(rèn)證加密 422
12.4 密鑰分發(fā)與管理 426
12.4.1 一次性密鑰配置 426
12.4.2 密鑰分發(fā)服務(wù)器 427
12.4.3 前向保密Ratcheting技術(shù) 428
12.4.4 后向安全 430
小測驗(yàn)答案 432
小結(jié) 432
第13章 物聯(lián)網(wǎng)API安全 433
13.1 設(shè)備驗(yàn)證 433
13.1.1 識別設(shè)備 433
13.1.2 設(shè)備證書 436
13.1.3 傳輸層驗(yàn)證 437
13.2 端到端驗(yàn)證 440
13.2.1 OSCORE 443
13.2.2 REST API中避免消息重放 450
13.3 受限環(huán)境下的OAuth2 455
13.3.1 設(shè)備授權(quán)許可 455
13.3.2 ACE-OAuth 459
13.4 離線訪問控制 460
13.4.1 離線用戶身份驗(yàn)證 460
13.4.2 離線授權(quán) 462
小測驗(yàn)答案 463
小結(jié) 463
附錄A 配置Java和Maven 464
附錄B 配置Kubernets 473