关于 security-watch
security-watch 是一个 Claude skill,会扫描文件写入中的常见安全反模式并阻止检测到的风险。它面向代码修改,按明文模式检查;项目说明指出它不能替代正式安全审查。
主要功能
- 01扫描写入内容中的机密
- 02标记危险函数
- 03检测注入模式
- 04检查不安全配置
- 05支持忽略注释
适用场景
- 01防止机密进入源代码
- 02在修改代码时检查写入
- 03检查潜在 SQL 或 Shell 注入
- 04用忽略注释保留刻意设置的测试模式
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ proffesor-for-testing/ agentic-qe --skill security-watch安装后在 Claude Code 中输入/security-watch确认已加载。
附带文件scripts/scan-security.sh
详细介绍
安全监控模式
激活后,会扫描每次文件写入,检测常见的安全反模式,并阻止危险代码被提交。
功能
标记或阻止包含以下内容的写入:
- 机密信息:源代码中的 API 密钥、密码、令牌、私钥
- 危险函数:
eval()、Function()、innerHTML、dangerouslySetInnerHTML - 注入入口:SQL/Shell 命令中未经清理的模板字面量
- 不安全配置:
http://URL、禁用 TLS 验证、*CORS 来源
激活
/security-watch
Hook 配置
{
"hooks": {
"PreToolUse": [
{
"matcher": "Write|Edit",
"hook": ".claude/skills/security-watch/scripts/scan-security.sh"
}
]
}
}
检测模式
#!/bin/bash
# scan-security.sh
CONTENT="$1"
ISSUES=0
# Secrets detection
SECRET_PATTERNS=(
'AKIA[0-9A-Z]{16}' # AWS Access Key
'sk-[a-zA-Z0-9]{48}' # OpenAI API Key
'ghp_[a-zA-Z0-9]{36}' # GitHub Personal Token
'password\s*[:=]\s*["\x27][^"\x27]+' # Hardcoded passwords
'BEGIN (RSA |EC )?PRIVATE KEY' # Private keys
'sk_live_[a-zA-Z0-9]+' # Stripe secret key
)
for pattern in "${SECRET_PATTERNS[@]}"; do
if echo "$CONTENT" | grep -qP "$pattern"; then
echo "BLOCKED: Potential secret detected matching pattern: $pattern"
ISSUES=$((ISSUES + 1))
fi
done
# Dangerous functions
DANGER_PATTERNS=(
'\beval\s*\('
'\bFunction\s*\('
'\.innerHTML\s*='
'dangerouslySetInnerHTML'
'child_process.*exec\('
'\$\{.*\}.*(?:SELECT|INSERT|UPDATE|DELETE)'
)
for pattern in "${DANGER_PATTERNS[@]}"; do
if echo "$CONTENT" | grep -qP "$pattern"; then
echo "WARNING: Dangerous pattern detected: $pattern"
ISSUES=$((ISSUES + 1))
fi
done
if [ $ISSUES -gt 0 ]; then
echo "Found $ISSUES security issues. Review before proceeding."
exit 1
fi
注意事项
- 对于有意包含
eval()等模式的测试固件,可能会产生误报——使用// security-watch:ignore注释 - 无法检测 Base64 编码的机密信息——此模式仅扫描明文
- 模板字面量注入检测会对安全的字符串插值产生误报——请仔细查看警告
- 这只是第一道防线,不能替代正规的安全审查
评论
支持 Markdown