VulnVault 是一个实用、开发者优先的知识库,涵盖常见和关键的应用程序安全漏洞,覆盖从代码到构建、基础设施和部署的完整生命周期。
它提供清晰的解释、真实的不安全与安全代码示例,以及跨多种编程语言和框架的可操作指导,帮助团队默认构建安全的应用程序。
🎯 目标:通过使安全编码易于理解、易于获取且可重复,提升组织的应用程序安全态势。
大多数安全指南要么:
VulnVault 通过以下方式弥合这一差距:
此仓库设计供以下人员使用:
VulnVault 按漏洞类别组织,而非按工具或标准。
每个漏洞通常包括:
示例使用真实的应用程序模式编写,而非人为构造的代码片段。
当前覆盖范围包括(并正在扩展):
每个示例都并排对比 ❌ 不安全 和 ✅ 安全 的实现。
String query = "SELECT * FROM users WHERE username = '" + username + "'";
为什么这很重要: 不受信任的输入被直接拼接到查询中,允许攻击者操纵 SQL 逻辑。
String query = "SELECT * FROM users WHERE username = ?";
PreparedStatement ps = connection.prepareStatement(query);
ps.setString(1, username);
ResultSet rs = ps.executeQuery();
📚 学习与参考 在开发过程中作为安全编码手册使用。
🔍 代码审查 在 PR 评论中直接链接相关的 VulnVault 页面。
🧪 安全测试 验证 SAST、DAST 或渗透测试的发现是否可被利用。
🎓 培训与入职 使用示例提升新员工和初级开发人员的技能。
🛡 AppSec 项目赋能 将指导与内部标准、威胁模型和风险偏好对齐。
欢迎并鼓励贡献。 你可以通过以下方式贡献:
贡献的指导原则:
VulnVault 有意聚焦于:
这不是一个漏洞扫描器——它是一个安全赋能资产。
此仓库中的示例仅用于教育目的。 不要将不安全的示例部署到生产系统。
本项目根据 MIT 许可证授权。 有关详细信息,请参阅 LICENSE 文件。
灵感来源于现实世界的安全审查、渗透测试,以及从构建和保护生产系统中汲取的经验教训。
🔐 构建安全的软件。从设计开始。