失效链接处理 |
API安全实战 PDF 下载
下载地址:
版权归出版社和原作者所有,链接已删除,请购买正版
用户下载说明:
电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
https://product.dangdang.com/11768117987.html
相关截图: 资料简介: 本书旨在引导读者掌握在不同环境下确保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 11.4.1 TLS证书认证的工作原理 352 11.4.2 客户端证书验证 355 11.4.3 验证客户端标识 356 11.4.4 使用服务网格 361 11.4.5 基于OAuth2的mTLS 363 11.4.6 证书绑定访问令牌 364 11.5 管理服务凭证 368 11.5.1 Kubernets secret 369 11.5.2 密钥和secret管理服务 373 11.5.3 避免在磁盘上保存长生命周期的secret 376 11.5.4 派生密钥 377 11.6 响应用户请求的服务API调用 381 11.6.1 phantom凭证模式 381 11.6.2 OAuth2令牌交换 383 小测验答案 386 小结 387 第五部分 用于物联网的API 第12章 物联网通信安全 390 12.1 传输层安全 391 12.1.1 数据报TLS 392 12.1.2 受限设备的密码套件 402 12.2 预共享密钥 407 12.2.1 实现一个PSK服务器 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 防滥用认证加密 422 12.4 密钥分发与管理 426 12.4.1 一次性密钥配置 426 12.4.2 密钥分发服务器 427 12.4.3 前向保密Ratcheting技术 428 12.4.4 后向安全 430 小测验答案 432 小结 432 第13章 物联网API安全 433 13.1 设备验证 433 13.1.1 识别设备 433 13.1.2 设备证书 436 13.1.3 传输层验证 437 13.2 端到端验证 440 13.2.1 OSCORE 443 13.2.2 REST API中避免消息重放 450 13.3 受限环境下的OAuth2 455 13.3.1 设备授权许可 455 13.3.2 ACE-OAuth 459 13.4 离线访问控制 460 13.4.1 离线用户身份验证 460 13.4.2 离线授权 462 小测验答案 463
小结 463 |