java-security-issues

代码示例贡献指南

目录结构

examples/
├── vulnerable/     # 漏洞代码示例
│   ├── SqlInjectionVulnerable.java
│   ├── XssVulnerable.java
│   └── ...
└── secure/         # 安全代码示例
    ├── SqlInjectionSecure.java
    ├── XssSecure.java
    └── ...

命名规范

类型 命名格式 示例
漏洞代码 {Issue}Vulnerable.java SqlInjectionVulnerable.java
安全代码 {Issue}Secure.java SqlInjectionSecure.java

代码要求

1. 完整性

代码应该是可编译的,包含必要的:

package com.example.vulnerable;

import java.sql.*;

/**
 * 漏洞代码示例:SQL 注入
 * Vulnerable Code Example: SQL Injection
 */
public class SqlInjectionVulnerable {

    public User findByUsername(String username) throws SQLException {
        // ... 漏洞代码
    }
}

2. 注释规范

每个文件应该包含:

/**
 * 漏洞代码示例:SQL 注入
 * Vulnerable Code Example: SQL Injection
 */
public class SqlInjectionVulnerable {

    /**
     * 漏洞:JDBC 字符串拼接
     * Vulnerability: JDBC String Concatenation
     */
    public User findByUsername(String username) {
        // 漏洞代码...
    }
}

3. 对应关系

每个漏洞代码应该有对应的安全代码:

4. 不包含敏感信息

示例模板

漏洞代码模板

package com.example.vulnerable;

/**
 * 漏洞代码示例:{漏洞名称}
 * Vulnerable Code Example: {Vulnerability Name}
 */
public class {Issue}Vulnerable {

    /**
     * 漏洞:{漏洞描述}
     * Vulnerability: {Vulnerability Description}
     */
    public void vulnerableMethod(String userInput) {
        // 漏洞代码
    }
}

安全代码模板

package com.example.secure;

/**
 * 安全代码示例:{漏洞名称}防护
 * Secure Code Example: {Vulnerability Name} Prevention
 */
public class {Issue}Secure {

    /**
     * 安全:{防护措施描述}
     * Secure: {Mitigation Description}
     */
    public void secureMethod(String userInput) {
        // 安全代码
    }
}

提交前检查清单

依赖说明

如果代码示例需要额外的依赖,请在文件头部注明:

/**
 * 依赖:org.springframework.boot:spring-boot-starter-web:2.7.0
 * Dependencies: org.springframework.boot:spring-boot-starter-web:2.7.0
 */