项目地址:https://github.com/momosecurity/rhizobia_J
Java安全编码Wiki:https://github.com/momosecurity/rhizobia_J/wiki/JAVA%E5%AE%89%E5%85%A8%E7%BC%96%E7%A0%81%E8%A7%84%E8%8C%83
先说下Java安全SDK在安全编码中的用处,所谓安全编码简单理解就是安全的编写代码或者说编写安全的代码。
SDK是软件开发工具包,我的理解是一个第三方jar包,在编写代码的时候进行调用。
它在SDL中的作用就是在编码阶段尽可能的减少漏洞的产生,同时对研发来说也很方便,在修复安全漏洞的时候不用去查资料怎么修补,而是直接调用SDK中的接口进行替换原有的漏洞代码。还有就是公司自研sdk的好处,也在一定程度上避免了代码泄露造成的风险。虽然比较微小……
安装
环境要求:Java 8 && Maven 3
下载项目,在项目的根目录中使用maven进行打包
mvn -D maven.test.skip=true clean install
随后在target目录下找到rhizobia_J-1.0.jar
在项目中进行调用,将jar包导入开发项目中,随后在maven的pom.xml文件中引入依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.11</version>
</dependency>
如下
使用(SQL注入为例)
原来的漏洞代码
public List<Student> getStudent(String username) {
String sql = "select * from students where username like '%" + username + "%'";
return jdbcTemplate.query(sql, ROW_MAPPER);
}
拼接造成的SQL注入,在这里怎么修复
# 导入
import com.immomo.rhizobia.rhizobia_J.sqli.MysqlSanitiser;
# 使用前实例化
MysqlSanitiser sqlTool = MysqlSanitiser.getInstance();
修复后的代码
public List<Student> getStudent(String username) {
MysqlSanitiser sqlTool = MysqlSanitiser.getInstance();//实例化
String uname = sqlTool.mysqlSanitise(username);//调用方法
String sql = "select * from students where username like '%" + uname + "%'";
return jdbcTemplate.query(sql, ROW_MAPPER);
}