一、前言
在开发过程中不可避免会使用到一些函数,在这些函数的使用过程中如果不注意安全问题,则容易出现安全问题,我们把这类函数称之为高风险函数。请大家在使用高风险函数时注意规避风险。
二、注意事项
1、 不拼命SQL语句。
2、 对传入参数进行校验、转义。
3、 对于传入的参数尽量规定范围,可以采用写死参数、预设参数白名单的方式。
4、 注意捕捉异常。
5、 高危函数,避免非通过其对外暴露安全漏洞
函数类型 | 函数名称 |
命令执行函数 | Runtime. public Process exec(String command) Runtime. public Process exec(String command, String[] envp) Runtime. public Process exec(String command, String[] envp, File dir) Runtime. public Process exec(String[] cmdarray) Runtime. public Process exec(String[] cmdarray, String[] envp) Runtime. public Process exec(String[] cmdarray, String[] envp, File dir) |
SQL命令执行函数 | Statement boolean execute(String sql) Statement ResultSet executeQuery() Statement ResultSet executeQuery(String sql) Statement int executeUpdate() Statement int executeUpdate(String sql) Connection prepareStatement(string sql) |
XSS相关执行函数 | PrintWriter.print(…) PrintWriter.println(…) PrintWriter.write(…) HttpServletResponse.sendError(…) ServletOutputStream.print(…); ServletOutputStream.println(…); OutputStreamWriter.write(…); |
Path traversal相关函数 | new FileWriter(string name) new File(String name) |
代码注入执行函数 | ScriptEngine.eval(string str) |
XPath注入执行函数 | XPath.compile(string str) |
数值转换危险函数 | Integer.parseInt(string str), Long.parseLong(string str), Double.parseDouble(string str), |
危险输入源函数 | BufferedReader.readLine(), ServletRequest.getParameter(), ServletRequest.getHead(), ServletRequest.getParameterValues(), |
其他危险函数 | System.runFinalizersOnExit Runtime.runFinalizersOnExit |