- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在对我的 Java 代码执行 veracode 扫描,它在我的 DAO 类之一中引发以下错误
SQL 命令中使用的特殊元素的不正确中和(“SQL 注入(inject)”)CWE ID 89
但是,我尝试使用 OWASP.ESAPI 库来缓解这种情况,因为我无法使用参数化输入来构建查询,因为我使用的是字符串构建器。以下是我正在尝试处理的示例代码
private static String getPhoneDataSql(QuerySearchType type, PhoneQueryParams queryParams){
StringBuilder sql = new StringBuilder("select * from users where ");
List<String> sqls = new ArrayList<String>();
if(StringUtils.isNotBlank(queryParams.getUserId())){
sqls.add("USER_ID like ".concat(type.format(encodeSQLInput(queryParams.getUserId()))));
}
if(StringUtils.isNotBlank(queryParams.getUserName())){
sqls.add(UNAME_LIKE.concat(type.format(encodeSQLInput(queryParams.getUserName()))));
}
if(StringUtils.isNotBlank(queryParams.getCompany())){
sqls.add("STR_COMPANY like ".concat(type.format(encodeSQLInput(queryParams.getCompany()))));
}
boolean firstAnd = false;
for(String s : sqls){
sql.append(firstAnd ? STR_SQL_LIKE : "").append(s);
firstAnd = true;
}
return sql.toString();
}
private static String encodeSQLInput(String sqlInput){
Codec ORACLE_CODEC = new OracleCodec();
if(sqlInput == null) {
return "NULL";
}
sqlInput = ESAPI.encoder().encodeForSQL( ORACLE_CODEC, sqlInput);
return sqlInput;
}
有人可以帮忙吗?
最佳答案
像 Veracode 这样的 SQL 注入(inject)扫描程序通常会提示,如果它们发现您正在通过与应用程序变量的字符串连接来构建 SQL 查询。他们无法判断您是否已正确转义应用程序变量中的内容以确保其安全。
最好避免字符串连接,因为它很容易犯错误并意外地导致 SQL 注入(inject)漏洞。
相反,请使用查询参数。不要连接字符串,而是在 SQL 字符串中保留像 ?
这样的占位符,并将变量绑定(bind)到语句。
文档中有很多示例:https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
关于java - 无法使用 OWASP.ESAPI 缓解 SQL 注入(inject) - Veracode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59855519/
我在我的项目中使用ESAPI,并将ESAPI配置目录添加到src/main/resources,因此它被复制到我的WAR文件中(我从cloudbees下载了WAR,我可以看到它被放在 WEB-INF/
我一直在尝试评估 OWASP ESAPI 库,但在正确初始化它时遇到了问题。我为 ESAPI.properties 和 validation.properties 设置了一个资源文件夹,这些文件夹是从
我已经有了 problems with the esapi , 但最后它奏效了... 我像这样在我的 pom.xml 中包含了 OWASP ESAPI org.owasp.esapi
我们在 Spring Web 应用程序中添加了一个过滤器,用于检查所有传入请求是否存在可能导致 XSS 漏洞的内容。但是,当它尝试写入日志时,我们得到以下堆栈跟踪: com.blah.blah.web
我尝试使用 esapi 库的 getValidSafeHtml () 函数,但出现以下异常 org.owasp.esapi.errors.ConfigurationException : Couldn
我正在使用 ESPAI 在 Java 中预防 SQLInjection。我只使用 ESAPI.encoder().encodeForSQL(ORACLE_CODEC,queryparam)) 方法。
我知道,我们可以使用encodeForHTML来处理HTMl,使用encodeForJavascript来处理javaScript。我的代码中有一个跨站点脚本:“Reflected fortify s
在将这个问题标记为重复之前,让我告诉你这个问题有点不同。 我在 NetBeans 上有一个包含三个模块的项目,即 -ejb、-ear 和 -web。我目前正在开发 -web 模块,直到昨晚一切正常,我
我是新手 Java 开发人员,在尝试使用 JBOSS 和 ESAPI 开发一些网站以确保安全时出现异常 java.lang.ClassCastException: org.jboss.logmanag
我的一个 REST API 有一个名为“partners”的查询参数,它是一个整数列表,因此您可以在 URL 中指定多个值。作为 XSS 攻击的预防措施,我使用 ESAPI 去除了输入中的恶意内容。这
我们有几个 webapps 需要 ESAPI java 库提供的功能。我和我的同事处于两难境地,是直接使用 ESAPI 从而直接依赖 ESAPI,还是创建一个接口(interface)来抽象对 ESA
我是一名 Java 开发人员,正朝着通往应用安全的道路前进,我偶然发现了 OWASP 组织及其配套的 Java API,即 ESAPI。 在我几个月前在此网站上提出的另一个问题中,有人向我指出 ESA
我正在尝试将 ESAPI 编码器与我的 JavaEE 应用程序合并,并希望它不对特定字符集进行编码,例如“<”、“!”、“(”、“)”。 我阅读了文档 https://static.javadoc.i
我试图通过对来自 UI 的内容进行编码来将数据保存到数据库,但是当尝试这样做时 ESAPI.encoder().encodeForXML(encodingContent goes here) 当执行此
我构建了一个 ESAPITestValidator 类,如下所示: public class ESAPITestValidator { Validator instance = ESAPI.valid
为了防止 SQL 注入(inject),OWASP对收到的字符进行编码。下面是 org.owasp.esapi.codecs.OracleCodec.java 类实现的代码 //Default im
我无法使用 ESAPI 类下的 of 方法 java.lang.String getValidInput(java.lang.String context,
在使用 OWASP 的 ESAPI 时,我发现自己陷入了这一特定代码行。 private static String customDirectory = System.getProperty("org
String safeOutput = ESAPI.encoder().encodeForHTML(request.getParameter("temp")); 上面不起作用,它没有验证。 (插入所有
我们有一个接受用户 URL 的应用程序。此数据需要验证,为此我们正在使用 ESAPI。但是,我们在处理包含 & 符号的 URL 时遇到了困难。 当 ESAPI 在验证之前对数据进行规范化时,就会出现问
我是一名优秀的程序员,十分优秀!