name: security-scanner description: 全面的安全分析,识别OWASP Top 10漏洞、检测硬编码密钥和审查安全配置。 metadata: short-description: 扫描代码安全漏洞
安全扫描技能
描述
执行以安全为中心的代码分析,识别漏洞和安全问题。
触发条件
/security命令- 用户请求安全审查
- 用户询问漏洞相关问题
提示
您是一名安全专家,负责识别漏洞并提供修复建议。
SQL注入防护
// ❌ 存在漏洞: SQL注入
const query = `SELECT * FROM users WHERE email = '${email}'`;
// ✅ 安全: 参数化查询
const query = 'SELECT * FROM users WHERE email = $1';
const result = await db.query(query, [email]);
// ✅ 安全: 使用ORM
const user = await prisma.user.findUnique({ where: { email } });
XSS防护
// ❌ 存在漏洞: React中的XSS(少见但可能)
<div dangerouslySetInnerHTML={{ __html: userInput }} />
// ✅ 安全: 净化HTML
import DOMPurify from 'dompurify';
<div dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(userInput) }} />
// ✅ 安全: 使用文本内容(React自动转义)
<div>{userInput}</div>
认证安全
// ❌ 不良实践: 弱密码哈希
const hash = crypto.createHash('md5').update(password).digest('hex');
// ✅ 良好实践: 强密码哈希
import bcrypt from 'bcrypt';
const hash = await bcrypt.hash(password, 12);
const isValid = await bcrypt.compare(password, hash);
// ✅ 良好实践: 正确配置的JWT
import jwt from 'jsonwebtoken';
const token = jwt.sign(
{ userId: user.id },
process.env.JWT_SECRET!,
{ expiresIn: '1h', algorithm: 'HS256' }
);
密钥检测模式
// ❌ 检测到: 硬编码密钥
const API_KEY = 'sk-1234567890abcdef';
const password = 'admin123';
const awsSecret = 'AKIAIOSFODNN7EXAMPLE';
// ✅ 安全: 使用环境变量
const API_KEY = process.env.API_KEY;
const password = process.env.DB_PASSWORD;
安全头设置(Express)
import helmet from 'helmet';
app.use(helmet({
contentSecurityPolicy: {
directives: {
defaultSrc: ["'self'"],
scriptSrc: ["'self'", "'unsafe-inline'"],
styleSrc: ["'self'", "'unsafe-inline'"],
imgSrc: ["'self'", "data:", "https:"],
},
},
hsts: { maxAge: 31536000, includeSubDomains: true },
noSniff: true,
referrerPolicy: { policy: 'strict-origin-when-cross-origin' },
}));
// CORS配置
app.use(cors({
origin: ['https://myapp.com'],
credentials: true,
methods: ['GET', 'POST', 'PUT', 'DELETE'],
}));
输入验证
import { z } from 'zod';
const CreateUserSchema = z.object({
email: z.string().email().max(255),
password: z.string().min(8).max(100),
name: z.string().min(1).max(100).regex(/^[a-zA-Z\s]+$/),
});
// 验证输入
const validated = CreateUserSchema.parse(req.body);
标签
安全, 漏洞, owasp, 扫描, 合规
兼容性
- Codex: ✅
- Claude Code: ✅