---
name: security-rules
type: review_rule
when: '代码审查, review, 安全部署, 安全检查, 安全审计'
scope:
  - backend
  - frontend
products:
  - '*'
id: ka-review-rule-安全审查规则
asset_kind: review_rule
lifecycle_status: active
authority: supporting
routes:
  - code_change
primary_triggers:
  - 安全审查规则
secondary_triggers: []
negative_triggers: []
priority: P1
specificity: 5
required_evidence:
  - execution_evidence
version: 1.0.0
last_reviewed: '2026-05-22'
migration_note: 知识资产标准化迁移
status: active
---

## SEC-01: SQL 字符串拼接导致注入风险
pattern: /(SELECT|INSERT|UPDATE|DELETE)\b.*[\+${]/
severity: critical
scope: backend
description: 禁止使用字符串拼接构造 SQL，必须使用参数化查询（PreparedStatement / MyBatis #{}）

## SEC-02: innerHTML 赋值存在 XSS 风险
pattern: /\.innerHTML\s*=/
severity: critical
scope: frontend
description: 禁止使用 innerHTML 直接插入用户内容，必须使用 textContent 或 DOMPurify 净化

## SEC-03: eval 或 Function 构造器执行动态代码
pattern: /\beval\s*\(|new\s+Function\s*\(/
severity: critical
scope: [backend, frontend]
description: 禁止使用 eval() 和 new Function()，存在任意代码执行风险

## SEC-04: 硬编码的密码/密钥/token
pattern: /password\s*=\s*["'][^"']+["']|secret[_-]?key\s*=\s*["'][^"']+["']|api[_-]?key\s*=\s*["'][^"']+["']/i
severity: critical
scope: [backend, frontend]
description: 敏感凭证禁止硬编码在源码中，必须使用环境变量或密钥管理服务

## SEC-05: 日志中打印敏感信息
pattern: /log\.\w+\(.*(?:password|token|secret|身份证|idcard)/i
severity: critical
scope: backend
description: 禁止在日志中输出密码、token、身份证号等敏感字段，必须脱敏处理

## SEC-06: 未验证的外部重定向
pattern: /redirect\s*\(\s*(?:req|request|ctx)\.\w+/
severity: warning
scope: backend
description: 重定向目标必须校验白名单域名，防止开放重定向攻击

## SEC-07: 路径遍历风险
pattern: /\.\.\/|\.\.\\/
severity: warning
scope: [backend, frontend]
description: 文件路径操作必须校验和规范化，防止通过 ../ 遍历到非授权目录

## SEC-08: 不安全的反序列化
pattern: /ObjectInputStream|unserialize|pickle\.load/
severity: critical
scope: backend
description: 禁止直接反序列化不可信数据，必须使用白名单校验或 JSON 替代方案

## SEC-09: SSRF 服务端请求伪造
pattern: /(?:HttpClient|RestTemplate|WebClient|OkHttp|URLConnection)\s*\(\s*(?:req|request|ctx|param)\./
severity: critical
scope: backend
description: 外部 URL 请求禁止直接使用用户输入，必须校验 IP/域名白名单，防止 SSRF 攻击

## SEC-10: CORS 配置过于宽松
pattern: /allowedOrigins\s*\(\s*"\*"\s*\)|Access-Control-Allow-Origin.*\*/
severity: warning
scope: backend
description: CORS 配置禁止使用通配符 *，必须指定具体域名白名单

## SEC-11: 未启用 HTTPS 的 Cookie
pattern: /cookie.*(?:secure\s*:\s*false|httpOnly\s*:\s*false)/i
severity: warning
scope: [backend, frontend]
description: 敏感 Cookie 必须设置 Secure 和 HttpOnly 标志

## SEC-12: JWT 未校验签名算法
pattern: /JWT|jwt.*verify|jwt.*decode/
severity: critical
scope: backend
description: JWT 必须显式指定签名算法（如 HS256/RS256），禁止接受 none 算法
