关于 secure-coding-practices
面向开发者和团队的软件安全编码指导技能,适用于开发或审查软件。它围绕输入验证、身份验证、密码学、依赖项和错误处理组织防御实践,并提供参考指南与检查清单。
主要功能
- 01安全原则与工作流程
- 02按主题整理参考指南
- 03安全实现检查清单
- 04高风险代码模式审查
- 05依赖项与机密信息指引
适用场景
- 01审查身份验证和会话代码
- 02验证输入并保护敏感数据
- 03在代码审查中评估依赖项
- 04为团队制定安全开发规范
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ nickcrew/ claude-cortex --skill secure-coding-practices安装后在 Claude Code 中输入/secure-coding-practices确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/authentication.mdcryptography.mddependencies.mderror-handling.mdinput-validation.mdoutput-encoding.mdsecure-defaults.mdvalidation/rubric.yaml详细介绍
安全编码实践
关于实施安全优先开发模式的全面指南,涵盖防御式编程技术和主动威胁缓解策略。
适用场景
- 实施身份验证和授权系统
- 处理用户输入或外部数据
- 处理敏感数据(PII、凭据、财务信息)
- 构建 API 和 Web 服务
- 管理加密操作(哈希、加密)
- 开展以安全为重点的代码审查
- 为团队制定安全开发标准
- 评估第三方依赖项和库
- 设计错误处理和日志记录策略
- 实施会话管理和令牌处理
核心安全原则
深度防御
应用多层安全控制——绝不要依赖单一保护机制。
安全失败
发生错误时,默认采用安全状态(拒绝访问、拒绝输入、记录事件)。
最小权限
仅授予必要的最低权限——用户、服务和数据库只能拥有所需的访问权限。
不轻信任何内容
验证所有输入、编码所有输出、核验所有来源、验证所有请求的身份。
快速参考
| 任务 | 加载参考资料 |
|---|---|
| 输入验证与清理 | skills/secure-coding-practices/references/input-validation.md |
| 输出编码与 XSS 防护 | skills/secure-coding-practices/references/output-encoding.md |
| 身份验证与会话 | skills/secure-coding-practices/references/authentication.md |
| 加密与密钥管理 | skills/secure-coding-practices/references/cryptography.md |
| 依赖项与供应链 | skills/secure-coding-practices/references/dependencies.md |
| 错误处理与日志记录 | skills/secure-coding-practices/references/error-handling.md |
| 安全默认值与配置 | skills/secure-coding-practices/references/secure-defaults.md |
工作流
- 确定安全需求 - 身份验证、授权、数据保护、合规性
- 加载相关参考资料 - 使用快速参考表查找具体指南
- 实施安全控制 - 结合适当的上下文应用参考资料中的模式
- 验证实现 - 使用安全扫描器、渗透测试和代码审查进行测试
- 监控和维护 - 定期进行安全审计、更新依赖项、扫描漏洞
安全检查清单
输入验证:
- 在服务器端使用允许列表验证所有用户输入
- 使用架构验证库(Joi、Yup、Zod)
- 实施严格的类型检查
- 清理文件路径并防止路径遍历
输出编码:
- 应用上下文感知编码(HTML、JS、URL、SQL)
- 使用自动转义的模板引擎
- 实施内容安全策略(CSP)
- 设置安全的 HTTP 标头(Helmet.js)
身份验证与授权:
- 使用 bcrypt/Argon2 对密码进行哈希处理(盐轮数 ≥12)
- 实施安全的会话管理
- 使用仅限 HTTPS 的 Cookie,并设置 HttpOnly 和 SameSite
- 对身份验证端点实施速率限制
- 在每个请求上验证授权
加密:
- 使用 AES-256-GCM 进行加密
- 使用 crypto.randomBytes() 生成密钥
- 将密钥存储在环境变量或 KMS 中
- 绝不要自行编写加密算法
依赖项:
- 定期运行 npm audit
- 在 package.json 中锁定依赖项版本
- 使用 Snyk/Dependabot 进行监控
- 验证软件包完整性(CDN 使用 SRI)
错误处理与日志记录:
- 向用户返回通用错误消息
- 使用关联 ID 记录错误
- 绝不要记录密码、令牌或 PII
- 监控安全事件和警报
常见错误
- 仅使用客户端验证作为防护措施(始终在服务端验证)
- 使用黑名单而非白名单(定义允许的内容,而非禁止的内容)
- 向用户暴露堆栈跟踪或内部错误
- 在源代码中硬编码密钥
- 在安全关键操作中使用 Math.random()
- 未在身份验证端点实施速率限制
- 宽松的相等比较可能导致类型强制攻击
- 在数据库查询中信任用户输入(SQL 注入)
- 未根据上下文进行输出编码(XSS 漏洞)
- 密码哈希强度不足(算法弱或工作因子低)
高风险代码模式
在代码审查中留意以下模式:
- 在 SQL 查询中拼接字符串(注入风险)
- 根据用户输入直接构造文件路径(路径遍历风险)
- 使用用户输入调用 eval()、Function() 或 exec()(代码注入)
- 反序列化不可信数据(RCE 风险)
- 硬编码密钥或凭据(泄露风险)
- 缺少身份验证/授权检查(访问控制)
- 弱加密算法(MD5、SHA1、ECB 模式)
- 在生产环境中使用冗长的错误消息(信息泄露)
- 缺少输入验证(注入、DoS)
- 不安全的会话配置(劫持风险)
资源
OWASP 资源:
- OWASP Top 10:https://owasp.org/Top10/
- OWASP Cheat Sheet Series:https://cheatsheetseries.owasp.org/
- OWASP ASVS:应用安全验证标准
- OWASP Dependency-Check:https://owasp.org/www-project-dependency-check/
标准与指南:
- NIST Cybersecurity Framework:https://www.nist.gov/cyberframework
- NIST SP 800-63B:数字身份指南(身份验证)
- CWE Top 25:https://cwe.mitre.org/top25/
工具:
- SAST:SonarQube、Semgrep、CodeQL
- DAST:OWASP ZAP、Burp Suite
- SCA:Snyk、npm audit、Dependabot
- 机密信息检测:TruffleHog、git-secrets
评论
支持 Markdown