
korean-law-mcp安全与限流实践API密钥隔离、令牌桶配额、对抗性输入防护完整清单【免费下载链接】korean-law-mcp법제처 국가법령정보를 LLM에서 바로 조회하는 MCP 서버. 법령·판례·조례 검색과 인용 검증 | MCP server for Korean law — search statutes, precedents, and ordinances, and verify citations项目地址: https://gitcode.com/gh_mirrors/ko/korean-law-mcpkorean-law-mcp 是一个让大语言模型直接查询韩国国家法令信息的 MCP 服务器覆盖法令、判例、条例检索与引用验证。这篇文章把它的完整安全清单拆开讲透API 密钥隔离、令牌桶限流、对抗性输入防护三大板块每个机制配对应源码路径部署自己的 MCP 服务时可直接对照。为什么一个查询工具也需要安全设计korean-law-mcp 本质是一个转发代理客户端把自然语言交给 AIAI 调用 MCP 工具服务器再向法制处 Open API 发起数十次上游请求。这个结构天然放大三类风险密钥泄露法制处 API 密钥OC可能出现在日志、错误信息甚至响应链接里配额耗尽AI 一次对话就可能扇出几十次上游调用无预算约束会打爆配额恶意输入一个精心构造的字符串就能让正则引擎卡死十几秒reDoS 攻击项目用约 1,000 个测试用例覆盖了这些路径见 src/lib/rate-limit.test.ts下面是完整机制清单。API 密钥隔离从请求到日志的三层防护1. 请求级隔离密钥不落磁盘。法制处 API 密钥通过 HTTP 请求头传入apikey、law-oc、x-api-key、Authorization: Bearer均可服务端用AsyncLocalStorage做请求粒度隔离——每个并发请求各自持有自己的密钥彻底避免多用户共享服务器时的竞态串号实现见 src/server/http-server.ts。2. 日志与错误信息强制脱敏。上游请求 URL 中的密钥参数OC、apikey等 6 种命名在写入日志或错误消息前统一替换为OC***由 src/lib/fetch-with-retry.ts 中的maskSensitiveUrl完成。3. 响应中的密钥剥离。一个真实发生过的漏洞法制处的判例详细链接字段里会原样携带本次请求使用的 OC 密钥若直接透传无密钥用户就能偷用服务器自身的配额绕过限流。v4.14.1 起响应渲染前的密钥值全部被剥离见 CHANGELOG.md。 经验值只要你的 MCP 服务器替用户持有第三方密钥就要假设密钥一定会出现在某个字符串里在入站参数 → 出站响应 → 日志三条路径上各设一道脱敏闸。令牌桶限流 滚动日配额完整配额体系为什么不用固定窗口MCP 的典型用法是一轮对话连调 5 次工具。固定窗口fixed window下窗口开头被几个用户打满后其余用户要干等整个窗口结束。实测中公开服务器上2/3 的无密钥请求直接收到 429。项目改用令牌桶src/lib/rate-limit.ts令牌按分钟匀速连续补充桶满即止。平均处理率不变但突发流量只消耗桶里的存量——用完后等几秒就有令牌补上体感 429 大幅下降。配套细节429 响应带Retry-After头和retry in Ns文案让客户端知道等多久滚动 24 小时日配额FALLBACK_DAILY_CAP兜底分分钟桶再宽松一天总量有顶保护服务器自身密钥在法制处的日配额被拒绝的请求不消耗配额24 小时整点滚动重置测试见 src/lib/rate-limit.test.ts配额参数一览均在启动时校验非法值直接拒绝启动而非静默失效见 src/server/http-config.ts环境变量默认值作用RATE_LIMIT_RPM60每 IP 每分钟请求上限FALLBACK_RATE_LIMIT_RPM120服务器兜底密钥的每分钟配额FALLBACK_RATE_LIMIT_BURST同 RPM令牌桶容量突发吸收量FALLBACK_DAILY_CAP0关闭滚动 24 小时总量上限MCP_MAX_UPSTREAM_REQUESTS48单个请求允许的上游 HTTP 次数含重试MCP_MAX_BATCH_CALLS20单个 JSON-RPC 批处理中的工具调用数TRUST_PROXYfalse仅接受 1~10 的显式整数防 X-Forwarded-For 伪造绕限单请求执行预算是另一道关键闸门src/lib/execution-limits.ts一个 MCP 请求内部无论扇出多少上游调用重试、反爬跳转都算共享同一份预算——默认最多 48 次上游请求、单响应体 8 MiB、累计 24 MiB、工具输出 5 万字符。任何一项越界立即抛出显式ExecutionLimitError而不是让请求无限膨胀。对抗性输入防护拒绝一个请求卡死整个服务器法律文本解析天然重度依赖正则这正是 reDoS 攻击的温床。v4.14.1 记录了一个真实案例长空格/逗号/数字重复的输入曾让正则引擎卡住 12~24 秒且对抗样本最长可达 45.9 秒。修复策略是双管齐下正则线性化把指数级回溯的模式改写为线性时间路径入口长度上限普通参数 2,000 字符、正文参数 50,000 字符超长直接拒绝——恶意载荷连解析器都到不了更隐蔽的一类攻击是上游重定向劫持服务器要跟随法制处反爬页面的跳转时若攻击者能控制跳转目标一次响应就能诱导服务器请求任意主机SSRF。src/lib/law-antibot.ts 的处理方式是解析跳转路径后强制校验目标主机与原 URL 一致不一致立即终止跳转最多 3 跳且只探测响应前 4 KB 做判定避免被恶意大响应拖慢。网络层还有两道默认即安全的配置HTTP 绑定默认127.0.0.1。监听非回环地址而未设置MCP_AUTH_TOKEN时服务器启动即报错fail-fast不会带着裸奔的配置跑起来取消信号全链路传播客户端断开连接后工具链、上游 fetch、退避等待全部中止——断连不再消耗服务器资源v4.11.0 起部署前安全自查清单 检查项korean-law-mcp 的做法密钥如何传入仅请求头不落盘、不进命令行参数多用户并发AsyncLocalStorage请求级隔离日志脱敏OC***全量掩码响应脱敏出站链接中的密钥值剥离限流算法令牌桶 Retry-After提示总量兜底滚动 24 小时日配额单请求放大上游调用/字节数执行预算reDoS正则线性化 入参长度上限重定向劫持同主机校验 跳数上限监听面默认回环地址公网需显式令牌断连资源取消信号传播到全部下游完整配置项说明可查 docs/API.md 与 docs/ARCHITECTURE.md限流测试场景值得对照阅读src/lib/rate-limit.test.ts。两分钟上手体验korean-law-mcp 以 npm 包发布无需自建服务器也能感受上述安全设计——Claude 客户端通过npx korean-law-mcp方式运行最新版程序化集成时用请求头apikey: 你的密钥携带法制处 API 密钥法制处 Open API 页面免费申请。一句话总结把密钥一定会泄露、配额一定会被打爆、输入一定会带恶意当作默认假设在入站参数、出站响应、日志三条路径上各设一道闸——这就是 korean-law-mcp 给所有 MCP 服务作者的安全模板。【免费下载链接】korean-law-mcp법제처 국가법령정보를 LLM에서 바로 조회하는 MCP 서버. 법령·판례·조례 검색과 인용 검증 | MCP server for Korean law — search statutes, precedents, and ordinances, and verify citations项目地址: https://gitcode.com/gh_mirrors/ko/korean-law-mcp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考