尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

API密钥泄露后怎么办?API Firewall黑名单拦截已泄露Token完整方案

API密钥泄露后怎么办?API Firewall黑名单拦截已泄露Token完整方案 API密钥泄露后怎么办API Firewall黑名单拦截已泄露Token完整方案【免费下载链接】api-firewallFast and light-weight API proxy firewall for request and response validation by OpenAPI specs.项目地址: https://gitcode.com/gh_mirrors/ap/api-firewallAPI Firewall 是一个快速、轻量级的 API 代理防火墙支持基于 OpenAPI 规范的请求与响应校验并提供 Token 黑名单功能把已泄露的 API 密钥写入文件挂载到防火墙即可精准拦截使用这些 Token 的访问请求。本文将带你用 4 步完成 Token 黑名单拦截配置快速止损密钥泄露风险。为什么泄露的API Token必须立刻处理 API 密钥一旦泄露攻击者可以拿着它直接调用你的接口读取用户数据、刷接口配额、甚至以你的身份发起请求。而密钥泄露的来源比想象中多提交到了公开代码仓库被代理日志、浏览器历史、抓包工具记录员工离职或内部扩散前端 JS 打包文件暴露传统的应对方式是全量轮转密钥但这会让所有正常用户被迫重新登录。更聪明的做法是只拦截已泄露的那几个 Token正常业务不受影响。这正是 API Firewall 黑名单功能的设计目标。API Firewall黑名单功能是如何工作的防火墙启动时会把黑名单文件中的 Token 一次性加载进内存缓存源码internal/platform/denylist/denylist.go之后每个请求经过中间件时internal/mid/denylist.go会检查两处请求头通过APIFW_DENYLIST_TOKENS_HEADER_NAME指定的 Header 中携带的 TokenCookie通过APIFW_DENYLIST_TOKENS_COOKIE_NAME指定的 Cookie 中携带的 Token。命中黑名单的请求会被直接拦截不会转发到后端服务并写入一条包含 host、path、method 的拦截日志方便你溯源攻击行为。 配置结构定义在 internal/config/config.go官方配置说明见 docs/configuration-guides/denylist-leaked-tokens.md。4步启用Token黑名单拦截第1步准备泄露Token清单文件创建一个.txt文件每行一个泄露的 Token纯 Token 本体不带Bearer前缀eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzb21lIjoicGF5bG9hZDk5OTk5ODIifQ.CUq8iJ_LUzQMfDTvArpz6jUyK0Qyn7jZ9WCqE0xKTCA eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzb21lIjoicGF5bG9hZDk5OTk5ODMifQ.BinZ4AcJp_SQz-iFfgKOKPz_jWjEgiVTb9cS8PP4BI0第2步挂载文件到Docker容器在docker-compose.yaml的volumes中把黑名单文件挂载进容器volumes: - ./api-specs:/opt/resources/specs:ro - ./leaked-tokens.txt:/opt/resources/tokens.denylist.db:ro项目自带的演示配置可参考 demo/docker-compose/docker-compose.yml其中已启用该功能。第3步设置4个关键环境变量环境变量作用APIFW_DENYLIST_TOKENS_FILE容器内黑名单文件路径如/opt/resources/tokens.denylist.dbAPIFW_DENYLIST_TOKENS_HEADER_NAME携带 Token 的 Header 名如AuthorizationAPIFW_DENYLIST_TOKENS_COOKIE_NAME携带 Token 的 Cookie 名可与 Header 同时使用依次检查APIFW_DENYLIST_TOKENS_TRIM_BEARER_PREFIX是否去除Bearer前缀再比对true/false⚠️最容易踩的坑如果黑名单里存的是纯 Token而请求头里是Bearer xxx必须将APIFW_DENYLIST_TOKENS_TRIM_BEARER_PREFIX设为true否则匹配会失败。environment: APIFW_DENYLIST_TOKENS_FILE: /opt/resources/tokens.denylist.db APIFW_DENYLIST_TOKENS_HEADER_NAME: Authorization APIFW_DENYLIST_TOKENS_COOKIE_NAME: APIFW_DENYLIST_TOKENS_TRIM_BEARER_PREFIX: true第4步验证拦截效果用泄露的 Token 发一个请求观察响应REST API 模式请求被拦截返回APIFW_CUSTOM_BLOCK_STATUS_CODE指定的状态码GraphQL 模式请求以 GraphQL 错误格式返回 access denied即使请求完全符合 schema 也会被拦截。同时查看容器日志命中时会输出The request with the API token has been blocked及请求详情。若使用 GraphQL API效果可在 Playground 中直观看到最佳实践与后续建议定期同步把黑名单接入你的密钥监控系统发现新泄露 Token 就追加一行并重启容器组合防线黑名单拦截只是第一道闸建议同时启用 API Firewall 的 OpenAPI 请求/响应校验docs/installation-guides/api-mode.md与 IP 白名单docs/configuration-guides/allowlist.md兜底措施对高权限密钥仍应评估轮转黑名单更适合来不及全量轮转、先精准止损的窗口期。API Firewall 开源项目架构图按以上 4 步配置完成后你的 API 就能在不打扰正常用户的前提下精准屏蔽所有使用已泄露密钥的恶意请求了。【免费下载链接】api-firewallFast and light-weight API proxy firewall for request and response validation by OpenAPI specs.项目地址: https://gitcode.com/gh_mirrors/ap/api-firewall创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表