gpt4 book ai didi

java - 配置 esapi 缓解 XSS SQLI {GET/POST data} 的完美方法

转载 作者:行者123 更新时间:2023-11-30 05:30:46 25 4
gpt4 key购买 nike

我们有一个 jaxrs 服务,不幸的是执行了原始查询,没有准备好的语句。我们使用 ESAPI 来缓解 XSS、SQLI。如下所示:

private String mitigateSQLI(String value) {

Encoder instance = ESAPI.encoder();
Codec c = new MySQLCodec(MySQLCodec.Mode.ANSI);

return instance.encodeForSQL(c, value);
}

private String mitigateXSS(String value) {
if (value == null)
return null;

// Use the ESAPI library to avoid encoded attacks.
value = ESAPI.encoder().canonicalize(value);

// Avoid null characters
value = value.replaceAll("\0", "");

// Clean out HTML
Document.OutputSettings outputSettings = new Document.OutputSettings();
outputSettings.escapeMode(EscapeMode.xhtml);
outputSettings.prettyPrint(false);
value = Jsoup.clean(value, "", Whitelist.none(), outputSettings);

return value;
}

以及具有默认配置的 ESAPI.properties 文件。

我们仍然在某些场景中面临 SQLI,知道查询是连接和形成的。

想知道是否有最好的方法/配置来缓解这些问题。 Way 可以是 ESAPI 属性或这些 ESAPI 可用方法。

最佳答案

不要逃避其他选择。正如 OWASP 中粗体引用的那样

主要防御:

  • 选项 1:使用准备好的语句(带有参数化查询)
  • 选项 2:使用存储过程
  • 选项 3:白名单输入验证
  • 选项 4:转义所有用户提供的输入

额外防御:

  • 另外:强制执行最低权限
  • 另外:执行白名单输入验证作为辅助防御

根据应用程序需求配置 ESAPI.properties 非常重要。当不使用准备好的语句时,您必须在服务器端转义输入。对于 Java,Apache 的 StringEscapeUtils 可以完成这项工作。

关于java - 配置 esapi 缓解 XSS SQLI {GET/POST data} 的完美方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57611710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com