当设计或修改 REST API 响应结构、处理 API 返回值时触发。防止 API 设计缺陷导致的字段错位、类型歧义等问题。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
网关/代理/WAF/CDN 中间件的安全关键词匹配实现规范,防止纯子串匹配误判正常响应内容中的技术术语(如 Cloudflare、502、error)
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
网关/WAF/CDN 中间件实现关键词匹配时,避免纯子串匹配导致正常响应内容被误判。
// ❌ 误判:纯子串匹配,长正文中的正常用词也会命中
var pseudoSuccessPatterns = []string{
"cloudflare",
"502 bad gateway",
"bad gateway",
"reconnecting",
"upstream error",
}
当业务响应正文包含这些关键词的字面值(如文章主题就是 "Cloudflare"),纯子串匹配会触发误判,导致:
关键事实:关键词出现在长正文中 ≠ 响应存在问题。
将关键词按风险特征拆分为两组,并配合 HTTP 元数据做分层判定:
使用正文关键词匹配前,先通过 HTTP 元数据排除绝大多数正常响应:
| 判定层 | 检查项 | 优先级 |
|---|---|---|
| 1. HTTP status | 2xx=正常, 5xx/429/某些403=错误 | 最高 |
| 2. Content-Type | text/event-stream 保持流式处理, application/json 检查 schema | ↑ |
| 3. 响应 schema / 错误字段 | JSON 中 error.code / error.message / success:false 等 | ↑ |
| 4. 正文关键词匹配 | 强/弱特征,仅作为启发式证据,不作为唯一事实 | 最低 |
正文关键词只是启发式证据:正常用户内容可能包含技术术语字面值(如 Cloudflare、502、bad gateway),关键词命中不必然等于响应错误,必须结合 status/schema 做综合判断。
完整错误语句或 HTML 错误页特征。这些模式极长且内容特殊,正常用户内容中几乎不可能出现,可任意长度命中:
| 特征 | 说明 |
|---|---|
exceeded retry limit, last status: 429 too many requests | 完整 429 错误句 |
must be enabled in your dashboard first | 完整仪表盘引导句 |
unexpected status 502 bad gateway: error code: 502 | 完整 502 错误句(含 UUID) |
<html / <title>5 / cf-ray: | HTML 错误页特征 |
var pseudoSuccessChatStrongPatterns = []string{
"exceeded retry limit, last status: 429 too many requests",
"must be enabled in your dashboard first",
"unexpected status 502 bad gateway: error code: 502",
"reconnecting...",
"<html",
"<title>5",
"cf-ray:",
}
单词级或短语级关键词。极短内容(≤512 字节)中命中才判为错误,避免长正文中技术术语误判:
| 特征 | 说明 |
|---|---|
429 too many requests | 短版 429 |
502 bad gateway / bad gateway | 短版 502 |
upstream error / upstream connect error | 上游错误 |
just a moment | CDN 挑战 |
cloudflare | CDN 品牌名 |
must be enabled in your dashboard first | 短版引导句 |
var pseudoSuccessChatWeakPatterns = []string{
"429 too many requests",
"502 bad gateway",
"bad gateway",
"upstream error",
"upstream connect error",
"just a moment",
"cloudflare",
"must be enabled in your dashboard first",
}
func containsPseudoSuccessInChatResponse(content string) bool {
// 先检查 HTTP status 和响应 schema(应有上层调用保证)
// 正文关键词仅作为启发式证据
// 强特征:任何长度命中
for _, p := range pseudoSuccessChatStrongPatterns {
if strings.Contains(strings.ToLower(content), p) {
return true
}
}
// 弱特征:仅 ≤512 字节命中
if len(content) > 512 {
return false
}
low := strings.ToLower(content)
for _, p := range pseudoSuccessChatWeakPatterns {
if strings.Contains(low, p) {
return true
}
}
return false
}
| 场景 | 策略 | 原因 |
|---|---|---|
| 聊天响应正文(长文本) | 强特征任意长度 + 弱特征仅 ≤512 字节命中 | 正文可能包含技术术语字面值 |
| 错误消息(短文本) | 全量匹配,无需长度限制 | error message 本身很短,且不含正常用户内容 |
| 流式响应片段(分块) | 参考 HTTP streaming 分类目标实现 | 等待完整块再匹配,或按内容格式切割后匹配 |
实现关键词匹配时,用以下问题自检:
自测案例:
| 内容 | 长度 | 正确判定 | 说明 |
|---|---|---|---|
"exceeded retry limit, last status: 429 too many requests" | 短 | 错误 | 强特征命中 |
"Cloudflare(文章主题)..." + 4657 字正文 | 长 | 正常 | 弱特征+超长→不命中 |
"502 Bad Gateway"(纯错误) | 短 | 错误 | 弱特征+短→命中 |
"502 Bad Gateway: 配置 Nginx 反向代理时..." + 完整博客 | 长 | 正常 | 弱特征+超长→不命中,无强特征 |
| skill | 关系 |
|---|---|
external-system-debugging | 本 skill 的上游:面对 CDN/WAF 网关行为异常时,先走外部系统方法论抓真实数据,再回来看匹配逻辑实现是否正确 |
api-design-safety | 本 skill 聚焦代理中间件的安全匹配实现,而非 API 本身的设计规范 |
ops-safety | 本 skill 不涉及运维操作安全、危险命令等 |
> 📋 本回复遵循:`api-proxy-safety` - [章节]
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
当设计或修改 REST API 响应结构、处理 API 返回值时触发。防止 API 设计缺陷导致的字段错位、类型歧义等问题。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
当设计或修改 REST API 响应结构、处理 API 返回值,或生成 Excel/CSV/PDF/对账文件等下游产物时触发。防止 API 设计缺陷导致的字段错位、类型歧义,以及生成产物时关键字段缺失但静默成功的问题。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
当 API/任务可能执行超过 10 秒(批量数据处理、远程 API 批量调用、全表扫描、跨租户聚合)时触发。防止同步接口被网关 30s 超时切断、用户重复点击触发并发、状态缓存内存泄漏等问题。提供异步任务状态机标准模板。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Bash 脚本与系统命令规范。禁止行尾注释,强制使用 tee/heredoc 写入,提升命令执行的可维护性。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
当用户操作 .sh、Dockerfile、Makefile、.yml、.yaml 文件,或在 Markdown 中编写 bash 代码块时触发。提供 Bash 编写规范。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Bash 编写规范。当用户操作 .sh、Dockerfile、Makefile、.yml、.yaml 文件, 或在 Markdown 中编写 bash/shell 代码块时触发。 包含注释规范、文件写入方式、Heredoc 引号规则、权限路径、脚本规范等。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.