mcpField
S
secure-coding-practices

secure-coding-practices

github.com/nickcrew安全62130 次安装17 周前更新
代码仓库

关于 secure-coding-practices

面向开发者和团队的软件安全编码指导技能,适用于开发或审查软件。它围绕输入验证、身份验证、密码学、依赖项和错误处理组织防御实践,并提供参考指南与检查清单。

主要功能

  1. 01安全原则与工作流程
  2. 02按主题整理参考指南
  3. 03安全实现检查清单
  4. 04高风险代码模式审查
  5. 05依赖项与机密信息指引

适用场景

  1. 01审查身份验证和会话代码
  2. 02验证输入并保护敏感数据
  3. 03在代码审查中评估依赖项
  4. 04为团队制定安全开发规范

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nickcrew/claude-cortex --skill secure-coding-practices

安装后在 Claude Code 中输入/secure-coding-practices确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
authentication.md
cryptography.md
dependencies.md
error-handling.md
input-validation.md
output-encoding.md
secure-defaults.md
validation/
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

工作流

  1. 确定安全需求 - 身份验证、授权、数据保护、合规性
  2. 加载相关参考资料 - 使用快速参考表查找具体指南
  3. 实施安全控制 - 结合适当的上下文应用参考资料中的模式
  4. 验证实现 - 使用安全扫描器、渗透测试和代码审查进行测试
  5. 监控和维护 - 定期进行安全审计、更新依赖项、扫描漏洞

安全检查清单

输入验证:

  • 在服务器端使用允许列表验证所有用户输入
  • 使用架构验证库(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 漏洞)
  • 密码哈希强度不足(算法弱或工作因子低)

高风险代码模式

在代码审查中留意以下模式:

  1. 在 SQL 查询中拼接字符串(注入风险)
  2. 根据用户输入直接构造文件路径(路径遍历风险)
  3. 使用用户输入调用 eval()、Function() 或 exec()(代码注入)
  4. 反序列化不可信数据(RCE 风险)
  5. 硬编码密钥或凭据(泄露风险)
  6. 缺少身份验证/授权检查(访问控制)
  7. 弱加密算法(MD5、SHA1、ECB 模式)
  8. 在生产环境中使用冗长的错误消息(信息泄露)
  9. 缺少输入验证(注入、DoS)
  10. 不安全的会话配置(劫持风险)

资源

OWASP 资源:

标准与指南:

工具:

  • SAST:SonarQube、Semgrep、CodeQL
  • DAST:OWASP ZAP、Burp Suite
  • SCA:Snyk、npm audit、Dependabot
  • 机密信息检测:TruffleHog、git-secrets

评论

支持 Markdown