项目地址: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进行打包

  1. mvn -D maven.test.skip=true clean install

随后在target目录下找到rhizobia_J-1.0.jar

在项目中进行调用,将jar包导入开发项目中,随后在maven的pom.xml文件中引入依赖

  1. <dependency>
  2. <groupId>log4j</groupId>
  3. <artifactId>log4j</artifactId>
  4. <version>1.2.17</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>commons-codec</groupId>
  8. <artifactId>commons-codec</artifactId>
  9. <version>1.11</version>
  10. </dependency>

如下

Java安全SDK--陌陌安全 - 图1

使用(SQL注入为例)

原来的漏洞代码

  1. public List<Student> getStudent(String username) {
  2. String sql = "select * from students where username like '%" + username + "%'";
  3. return jdbcTemplate.query(sql, ROW_MAPPER);
  4. }

拼接造成的SQL注入,在这里怎么修复

  1. # 导入
  2. import com.immomo.rhizobia.rhizobia_J.sqli.MysqlSanitiser;
  3. # 使用前实例化
  4. MysqlSanitiser sqlTool = MysqlSanitiser.getInstance();

修复后的代码

  1. public List<Student> getStudent(String username) {
  2. MysqlSanitiser sqlTool = MysqlSanitiser.getInstance();//实例化
  3. String uname = sqlTool.mysqlSanitise(username);//调用方法
  4. String sql = "select * from students where username like '%" + uname + "%'";
  5. return jdbcTemplate.query(sql, ROW_MAPPER);
  6. }