项目地址: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);}
