plugins/code-review/skills/security-review/SKILL.md
代码安全审查与漏洞风险评估能力。 当用户说"安全审查"、"安全检查"、"漏洞扫描"、"SQL注入"、"XSS"、"CSRF"、"OWASP"、"安全风险"、"代码安全"、"渗透测试"时使用此技能。 基于 OWASP Top 10 标准,检测注入攻击(SQL/NoSQL/命令注入)、XSS、访问控制失效、加密机制失效、敏感数据泄露等安全问题。 输出包含 CVSS 评分、漏洞详情和修复代码示例。
npx skillsauth add protagonistss/ithinku-plugins security-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
专业的安全审查技能,能够识别代码中的安全漏洞、评估安全风险并提供防护建议。
Security Review 技能提供全面的代码安全分析能力,基于OWASP安全标准和CVE漏洞数据库,识别常见的安全漏洞和风险。
# 按 OWASP 标准进行安全审查
/security-review src/api/ --owasp
# 检查特定合规标准
/security-review src/ --compliance gdpr
# 快速安全扫描
/security-review src/auth/ --scan-type quick
# 深度安全审查
/security-review src/ --depth deep --format report
// 危险代码示例
app.get('/admin/users/:id', (req, res) => {
// 缺少权限检查
User.findById(req.params.id, (err, user) => {
res.json(user);
});
});
// 安全代码示例
app.get('/admin/users/:id', requireAdmin, async (req, res) => {
try {
// 权限检查
if (!hasPermission(req.user, 'read', 'user')) {
return res.status(403).json({ error: 'Insufficient permissions' });
}
const user = await User.findById(req.params.id);
if (!user) {
return res.status(404).json({ error: 'User not found' });
}
// 敏感信息过滤
const { password, ...safeUser } = user.toJSON();
res.json(safeUser);
} catch (error) {
res.status(500).json({ error: 'Internal server error' });
}
});
// 危险代码示例
function encryptPassword(password) {
return crypto.createHash('md5').update(password).digest('hex');
}
// 安全代码示例
const bcrypt = require('bcrypt');
const crypto = require('crypto');
class SecurePassword {
constructor() {
this.saltRounds = 12;
}
async hash(password) {
return bcrypt.hash(password, this.saltRounds);
}
async verify(password, hash) {
return bcrypt.compare(password, hash);
}
generateSecureToken() {
return crypto.randomBytes(32).toString('hex');
}
}
// 危险代码示例
app.get('/search', (req, res) => {
const query = `SELECT * FROM products WHERE name LIKE '%${req.query.q}%'`;
db.query(query, (err, results) => {
res.json(results);
});
});
// 安全代码示例
app.get('/search', async (req, res) => {
try {
// 输入验证
if (!req.query.q || req.query.q.length > 100) {
return res.status(400).json({ error: 'Invalid search query' });
}
// 参数化查询
const query = 'SELECT * FROM products WHERE name LIKE ?';
const results = await db.query(query, [`%${req.query.q}%`]);
res.json(results);
} catch (error) {
console.error('Search error:', error);
res.status(500).json({ error: 'Internal server error' });
}
});
| 影响程度 | 几乎确定 | 很可能 | 可能 | 不太可能 | |---------|---------|--------|------|----------| | 严重 | 🔴 严重 | 🔴 严重 | 🟡 高危 | 🟡 中危 | | 高 | 🔴 严重 | 🟡 高危 | 🟡 中危 | 🟢 低危 | | 中 | 🟡 高危 | 🟡 中危 | 🟢 低危 | 🟢 低危 | | 低 | 🟡 中危 | 🟢 低危 | 🟢 低危 | 🟢 信息 |
# 安全审查报告
## 基本信息
- **审查范围**: 整个Web应用程序
- **应用类型**: 电商网站
- **技术栈**: Node.js, React, MongoDB
- **审查时间**: 2024-01-15 10:00:00
- **审查标准**: OWASP Top 10 2021
## 风险概览
- **严重漏洞**: 2个
- **高危漏洞**: 5个
- **中危漏洞**: 8个
- **低危漏洞**: 15个
- **安全评分**: 5.2/10
## 🔴 严重漏洞 (立即修复)
### 1. SQL注入漏洞 (CVE-2024-1234)
- **位置**: /api/users/search 第45行
- **CVSS评分**: 9.8 (严重)
- **OWASP分类**: A03:2021 - 注入
- **影响**: 可能导致数据库完全泄露
- **修复方案**: 使用参数化查询
### 2. 硬编码密钥泄露
- **位置**: config/database.js 第12行
- **CVSS评分**: 9.1 (严重)
- **影响**: 数据库完全访问权限
- **修复方案**: 使用环境变量
## 🟡 高危漏洞 (优先修复)
### 3. XSS漏洞
- **位置**: /posts/:id 第78行
- **CVSS评分**: 7.5 (高危)
- **OWASP分类**: A03:2021 - 注入
- **修复**: 使用DOMPurify进行输出编码
## 修复优先级
### 立即修复 (24小时内)
1. SQL注入漏洞 - 数据库泄露风险
2. 硬编码密钥 - 完全系统控制风险
### 本周修复
3. XSS漏洞 - 用户数据泄露
4. CSRF漏洞 - 跨站请求伪造
5. 弱会话管理 - 会话劫持风险
### 下个迭代
6. 缺少速率限制
7. 日志信息泄露
8. 文件上传漏洞
## 安全改进建议
### 1. 实施Web应用防火墙(WAF)
- 推荐使用: Cloudflare WAF, AWS WAF
- 配置规则: OWASP ModSecurity Core Rule Set
### 2. 加强认证和授权
- 实施多因素认证(MFA)
- 使用基于角色的访问控制(RBAC)
- 定期审查用户权限
### 3. 数据保护
- 启用数据库加密
- 实施数据脱敏策略
- 定期备份和恢复测试
## 合规性检查
### GDPR合规
- [ ] 个人数据保护
- [ ] 数据主体权利
- [ ] 数据泄露通知
- [ ] 隐私设计
### PCI DSS合规
- [ ] 支付卡数据保护
- [ ] 网络安全
- [ ] 访问控制
- [ ] 安全监控
## 安全监控建议
### 实时监控
- 异常登录检测
- SQL注入尝试监控
- XSS攻击检测
- 异常API调用监控
### 定期检查
- 月度安全扫描
- 季度渗透测试
- 年度安全审计
- 漏洞管理
## 学习资源
- [OWASP安全指南](https://owasp.org/)
- [NIST网络安全框架](https://www.nist.gov/cyberframework)
- [SANS安全培训](https://www.sans.org/)
# Apache安全配置示例
<Directory "/var/www/html">
# 隐藏服务器信息
ServerTokens Prod
ServerSignature Off
# 防止目录遍历
Options -Indexes
# 安全头
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
Header always set X-XSS-Protection "1; mode=block"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# CSP策略
Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'"
</Directory>
const helmet = require('helmet');
const rateLimit = require('express-rate-limit');
// 安全中间件
app.use(helmet({
contentSecurityPolicy: {
directives: {
defaultSrc: ["'self'"],
scriptSrc: ["'self'", "'unsafe-inline'"],
styleSrc: ["'self'", "'unsafe-inline'"],
imgSrc: ["'self'", "data:", "https:"],
},
},
}));
// 速率限制
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15分钟
max: 100, // 限制每个IP 100个请求
message: 'Too many requests from this IP'
});
app.use('/api/', limiter);
// SQL注入测试用例
const sqlInjectionTests = [
"' OR '1'='1",
"'; DROP TABLE users; --",
"' UNION SELECT username, password FROM users --",
"1' AND (SELECT COUNT(*) FROM users) > 0 --"
];
// XSS测试用例
const xssTests = [
"<script>alert('XSS')</script>",
"<img src=x onerror=alert('XSS')>",
"javascript:alert('XSS')",
"<svg onload=alert('XSS')>"
];
// 路径遍历测试
const pathTraversalTests = [
"../../../etc/passwd",
"..\\..\\..\\windows\\system32\\config\\sam",
"....//....//....//etc/passwd"
];
# GitHub Actions 安全扫描示例
name: Security Scan
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run SAST
uses: github/super-linter@v3
env:
DEFAULT_BRANCH: main
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VALIDATE_JAVASCRIPT_ES: true
- name: Run dependency check
run: |
npm audit --audit-level high
- name: Run Snyk security scan
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
通过系统性的安全审查和持续改进,可以显著提高应用程序的安全性,降低安全风险。
development
Vue 3 开发最佳实践指南 - Composition API、Script Setup、Pinia、TypeScript 集成及性能优化。 当用户说"Vue 3组件"、"Composition API"、"script setup"、"Pinia"、"Vue 3项目"、"ref reactive"、"defineProps defineEmits"、"Composable"、"Vue 3优化"时使用此技能。 涵盖:Script Setup 与 Composition API、响应式数据选择(ref vs reactive)、组件通信(Props/Emits/v-model/Slots)、Composables 设计模式、Pinia Setup Store、性能优化(v-memo、shallowRef、KeepAlive)。 提供 TypeScript 代码示例、反模式对照表、迁移指南和示例文件引用。
development
Vue 2 维护与开发最佳实践指南 - Options API、Vuex 及向 Vue 3 迁移准备。 当用户说"Vue 2组件"、"Options API"、"Vuex"、"Vue 2项目"、"Vue 2迁移"、"Vue mixin"、"Vue 2最佳实践"时使用此技能。 涵盖:Options API 规范(选项顺序、props 验证)、Vuex 模块化(namespaced modules)、逻辑复用(避免 mixin,使用工具函数)、迁移准备(停止使用 Filters、引入 Composition API 插件)。 提供 Vue 2 代码示例、反模式警告和迁移建议。
development
核心设计能力 - 提供配色、布局、组件样式生成及反模式检查。 当用户说"设计UI"、"生成样式"、"页面布局"、"CSS样式"、"组件设计"、"配色方案"、"设计系统"、"前端样式"、"响应式设计"、"动画效果"时使用此技能。 支持多种设计风格:Neo-Brutalism、Glassmorphism、Editorial、Cyberpunk。 提供配色方案、布局生成、组件样式、微交互动效、响应式网格。拒绝"AI廉价感",追求大胆、独特、细节丰富的设计。 重要特性:提供反模式检查,避免泛滥的渐变、无聊的阴影、默认圆角等平庸设计。
content-media
无障碍设计审查与修复能力。 当用户说"无障碍"、"a11y"、"WCAG"、"键盘导航"、"屏幕阅读器"、"颜色对比度"、"ARIA"、"可访问性"、"辅助功能"、"盲人友好"时使用此技能。 基于 WCAG 2.1 标准,检测图片 Alt 文本缺失、表单 Label 关联、键盘可访问性、颜色对比度不足、ARIA 属性误用等问题。 提供修复代码示例:语义化标签、焦点管理、焦点陷阱、屏幕阅读器支持。输出合规性检查报告和修复建议。