预购商品
书目分类
特别推荐
本書旨在引導讀者掌握在不同環境下確保API安全所需的技術。首先介紹基本的安全編碼技術,之後深入研究身份認證和授權技術。 全書共5部分,13章,其中:第1部分介紹了API安全的基本原理,是本書其餘內容的基礎;第2部分更詳細地介紹RESTful API的身份驗證機制;第3部分介紹了授權(authorization)相關的內容;第4部分深入探討了如何確保運行在Kubernetes環境下的微服務API的安全性;第5部分介紹物聯網(IoT)中的API。這類API的安全尤其有挑戰性,因為物聯網設備的能力往往很有限,並且會遭遇到各種各樣的威脅。對於構建Web程式有一定經驗的開發人員來講,本書可以提高他們對API安全技術和最佳實踐的瞭解,也有助於技術架構師緊跟最新API安全方法技術更新的步伐。
譯者序 前言 致謝 關於本書 關於作者 第一部分 基礎 第1章 什麼是API安全 2 1.1 打個比方:參加駕照考試 3 1.2 什麼是API 4 1.3 API安全上下文 6 1.4 API安全要素 10 1.4.1 資產 11 1.4.2 安全目標 11 1.4.3 環境與威脅模型 13 1.5 安全機制 15 1.5.1 加密 16 1.5.2 身份識別和身份驗證 17 1.5.3 存取控制和授權 18 1.5.4 審計日誌 19 1.5.5 速率限制 20 小測驗答案 21 小結 21 第2章 安全API開發 22 2.1 Natter API 22 2.1.1 Natter API概覽 23 2.1.2 功能實現概覽 24 2.1.3 設置專案 25 2.1.4 初始化資料庫 26 2.2 開發REST API 28 2.3 連接REST終端 31 2.4 注入攻擊 33 2.4.1 防禦注入攻擊 37 2.4.2 使用權限緩解SQL注入攻擊 39 2.5 輸入驗證 40 2.6 生成安全的輸出 45 2.6.1 利用XSS攻擊 47 2.6.2 防禦XSS攻擊 49 2.6.3 實施防護 50 小測驗答案 52 小結 53 第3章 加固Natter API 54 3.1 使用安全控制來處置威脅 54 3.2 速率限制解決可用性 55 3.3 使用身份驗證抵禦欺騙 61 3.3.1 HTTP基本驗證 62 3.3.2 使用Scrypt確保密碼安全存儲 62 3.3.3 創建密碼資料庫 63 3.3.4 在Natter API中註冊用戶 64 3.3.5 驗證用戶 66 3.4 使用加密確保資料不公開 68 3.4.1 啟用HTTPS 70 3.4.2 加強資料傳輸安全 71 3.5 使用審計日誌問責 72 3.6 存取控制 77 3.6.1 強制身份驗證 78 3.6.2 存取控制清單 79 3.6.3 Natter的強制存取控制 81 3.6.4 Natter空間增加新成員 83 3.6.5 避免提權攻擊 84 小測驗答案 85 小結 85 第二部分 基於權杖的身份驗證 第4章 會話Cookie驗證 88 4.1 Web流覽器的身份驗證 88 4.1.1 在JavaScript中調用Natter API 89 4.1.2 表單提交攔截 91 4.1.3 提供同源HTML服務 91 4.1.4 HTTP認證的缺點 94 4.2 基於權杖的身份驗證 95 4.2.1 權杖存儲抽象 97 4.2.2 基於權杖登錄的實現 98 4.3 Session Cookie 100 4.3.1 防範會話固定攻擊 103 4.3.2 Cookie安全屬性 105 4.3.3 驗證會話Cookie 107 4.4 防範跨站請求偽造攻擊 109 4.4.1 SameSite Cookie 111 4.4.2 基於雜湊計算的雙重提交Cookie 113 4.4.3 在Natter API中應用雙重提交Cookie 116 4.5 構建Natter登錄UI 121 4.6 實現註銷 125 小測驗答案 127 小結 127 第5章 最新的基於權杖的身份驗證 128 5.1 使用CORS允許跨域請求 128 5.1.1 預檢請求 129 5.1.2 CORS頭 131 5.1.3 在Natter API中添加CORS頭部 132 5.2 不使用Cookie的權杖 135 5.2.1 在資料庫中保存權杖的狀態 136 5.2.2 Bearer身份驗證方案 141 5.2.3 刪除過期權杖 143 5.2.4 在Web存儲中存儲權杖 143 5.2.5 修改CORS篩檢程式 146 5.2.6 對Web存儲的XSS攻擊 147 5.3 加固資料庫權杖存儲 149 5.3.1 對資料庫權杖進行雜湊計算 150 5.3.2 使用HMAC驗證權杖 151 5.3.3 保護敏感屬性 156 小測驗答案 158 小結 159 第6章 自包含權杖和JWT 160 6.1 在用戶端存儲權杖狀態 160 6.2 JSON Web權杖 163 6.2.1 標準JWT聲明 165 6.2.2 JOSE頭部 166 6.2.3 生成標準的JWT 168 6.2.4 驗證簽名JWT 171 6.3 加密敏感屬性 172 6.3.1 認證加密 173 6.3.2 NaCl認證加密 175 6.3.3 加密JWT 177 6.3.4 使用JWT庫 180 6.4 使用安全類型來加固API設計 183 6.5 處理權杖撤銷 185 小測驗答案 189 小結 189 第三部分 授權 第7章 OAuth2和OpenID Connect 192 7.1 作用域權杖 193 7.1.1 在Natter中添加作用域權杖 193 7.1.2 作用域和許可權之間的區別 197 7.2 OAuth2簡介 200 7.2.1 用戶端類型 201 7.2.2 授權許可 201 7.2.3 發現OAuth2終端 203 7.3 授權碼許可 204 7.3.1 重定向不同類型用戶端的URI 208 7.3.2 使用PKCE增強授權碼交換安全性 209 7.3.3 刷新權杖 210 7.4 驗證訪問權杖 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 單點登錄 229 7.6 OpenID Connect 230 7.6.1 ID權杖 231 7.6.2 加固OIDC 232 7.6.3 向API傳遞ID權杖 233 小測驗答案 235 小結 235 第8章 基於身份的存取控制 237 8.1 用戶和組 237 8.2 基於角色的存取控制 243 8.2.1 角色映射許可權 244 8.2.2 靜態角色 245 8.2.3 確定用戶角色 247 8.2.4 動態角色 248 8.3 基於屬性的存取控制 249 8.3.1 組合決策 251 8.3.2 實現ABAC策略 252 8.3.3 策略代理和API閘道 256 8.3.4 分散式策略實施和XACML 257 8.3.5 ABAC最佳實踐 258 小測驗答案 260 小結 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 能力與身份相結合 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 小測驗答案 293 小結 293 第四部分 Kubernetes中的微服務API及服務到服務API的安全 第10章 Kubernetes中的微服務API 296 10.1 Kubernetes上的微服務API 297 10.2 在Kubernetes上部署Natter API 300 10.2.1 將H2資料庫構建為Docker容器 301 10.2.2 將資料庫部署到Kubernetes 305 10.2.3 將Natter API構建為Docker容器 309 10.2.4 連結預覽微服務 313 10.2.5 部署新的微服務 315 10.2.6 調用連結預覽微服務 317 10.2.7 防範SSRF攻擊 320 10.2.8 DNS重綁定攻擊 325 10.3 確保微服務通信安全 327 10.3.1 使用TLS來保證通信安全 327 10.3.2 使用TLS服務網格 329 10.3.3 鎖定網路連接 333 10.4 確保輸入請求的安全性 335 小測驗答案 339 小結 339 第11章 服務到服務API的安全 340 11.1 API金鑰和JWT Bearer身份驗證 340 11.2 OAuth2用戶端憑證許可 342 11.3 OAuth2的JWT Bearer許可 345 11.3.1 用戶端驗證 346 11.3.2 生成JWT 349 11.3.3 服務帳戶身份驗證 351 11.4 Mutual TLS驗證 352
最近浏览商品
客服公告
热门活动
订阅电子报