com um clique
review-security
代码安全性评审。当用户需要检查代码安全漏洞、SQL注入、XSS攻击、权限控制,或询问"帮我做安全评审"、"检查安全问题"时使用。
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
代码安全性评审。当用户需要检查代码安全漏洞、SQL注入、XSS攻击、权限控制,或询问"帮我做安全评审"、"检查安全问题"时使用。
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
设计文档评审。当用户需要评审设计文档质量、检查设计合理性、发现设计缺陷,或询问"帮我评审设计文档"、"检查设计质量"时使用。
需求文档评审。当用户需要评审需求文档质量、检查需求完整性、发现需求缺陷,或询问"帮我评审需求文档"、"检查需求质量"时使用。
需求分析文档生成。当用户需要分析需求、生成需求规格说明书、需求文档,或询问“帮我分析这个需求”、“写需求文档”时使用。
现有项目技术架构分析。当用户需要分析老项目技术栈、接手新项目、技术调研,或询问"分析这个项目的技术架构"、"梳理技术栈"时使用。
数据库表结构导出。当用户需要导出数据库结构、生成表结构DDL,或询问"导出表结构"、"导出数据库DDL"时使用。
系统功能设计文档生成。当用户需要生成设计文档、系统设计、技术方案,或询问"帮我写设计文档"、"生成技术设计"时使用。
| name | review-security |
| description | 代码安全性评审。当用户需要检查代码安全漏洞、SQL注入、XSS攻击、权限控制,或询问"帮我做安全评审"、"检查安全问题"时使用。 |
所有输出内容必须使用中文,包括安全评审报告、问题描述、安全建议、修复方案等。
专注于代码安全性评审,识别和防范常见的安全漏洞,确保代码符合安全最佳实践。
进行安全评审时,可参考 OWASP Top 10 安全风险清单。
当用户提供待评审的代码(单个接口、模块或系统关键路径),并可选说明关注重点时,执行安全评审。
// ❌ 不安全的代码
String sql = "SELECT * FROM user WHERE username = '" + username + "'";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
// ✅ 安全的代码
String sql = "SELECT * FROM user WHERE username = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
ResultSet rs = pstmt.executeQuery();
// ✅ 使用 MyBatis
@Select("SELECT * FROM user WHERE username = #{username}")
User selectByUsername(@Param("username") String username);
// ❌ 不安全的代码
String content = request.getParameter("content");
response.getWriter().write(content);
// ✅ 安全的代码
String content = request.getParameter("content");
String safeContent = StringEscapeUtils.escapeHtml4(content);
response.getWriter().write(safeContent);
// ❌ 不安全的代码
String password = request.getParameter("password");
String md5Password = DigestUtils.md5Hex(password);
user.setPassword(md5Password);
// ✅ 安全的代码
String password = request.getParameter("password");
String hashedPassword = BCrypt.hashpw(password, BCrypt.gensalt(12));
user.setPassword(hashedPassword);
// ❌ 不安全的代码
@GetMapping("/user/{id}")
public User getUser(@PathVariable Long id) {
return userService.getById(id); // 未检查权限
}
// ✅ 安全的代码
@GetMapping("/user/{id}")
public User getUser(@PathVariable Long id) {
Long currentUserId = SecurityUtils.getCurrentUserId();
if (!id.equals(currentUserId) && !SecurityUtils.isAdmin()) {
throw new ForbiddenException("无权访问其他用户信息");
}
return userService.getById(id);
}
# 安全评审报告
## 概览
- 评审文件:xxx.java
- 评审时间:2024-xx-xx
- 风险等级:🔴 高风险 / 🟠 中风险 / 🟢 低风险
## 发现的安全问题
### 🔴 高危漏洞(x 个)
1. **SQL 注入漏洞**
- 位置:UserService.java:45
- 风险:攻击者可执行任意 SQL 命令
- 影响:数据泄露、数据篡改、权限提升
- 修复建议:使用 PreparedStatement
- 示例代码:[...]
### 🟠 中危漏洞(x 个)
...
### 🟢 低危问题(x 个)
...
## 安全加固建议
1. 实施输入验证白名单机制
2. 启用 HTTPS 强制跳转
3. 配置安全响应头
4. 实施日志审计
5. 定期安全扫描
## 合规性检查
- [ ] OWASP Top 10 检查
- [ ] 等保要求检查
- [ ] 企业安全规范检查