【问题标题】:Sybase codec for OSWAP ESAPI用于 OSWAP ESAPI 的 Sybase 编解码器
【发布时间】:2018-03-20 03:41:28
【问题描述】:

我使用sybase数据库。

如果我想使用 OWASP ESAPI 来防止 SQL 注入

我应该使用哪种编解码器?

甲骨文编解码器? MySQL编解码器? DB2 编解码器? https://static.javadoc.io/org.owasp.esapi/esapi/2.0.1/org/owasp/esapi/codecs/package-summary.html

谢谢!

【问题讨论】:

  • ESAPI 2.0.1 已严重过时并包含安全漏洞。

标签: java sybase codec owasp esapi


【解决方案1】:

首先,不要使用 ESAPI 来防止 SQL 注入。存在的所有 SQL 编码编解码器的设计意图是在网站被黑客入侵的事件中提供紧急措施,并且在重写所有查询以使用 Prepared Statements. 时需要快速而肮脏的东西。

Here's an excerpt of documentation for the OracleCodec:

/**
 * Implementation of the Codec interface for Oracle strings. This function will only protect you from SQLi in the case of user data
 * bring placed within an Oracle quoted string such as:
 * 
 * select * from table where user_name='  USERDATA    ';

忽略 Sybase 手册中的以下文字:

不要准备只使用一次的语句

所有 数据库事务使用准备好的语句或存储过程。在近十年的工程生涯中,我从未真正见过使用准备好的语句会导致实际性能下降。在大多数语言中,性能都会提高。 Java 肯定是这种情况。

准备好的语句如下所示:

[2019 年编辑] 下面的代码在技术上可能是 SQLi 本身,当我写这篇文章时,我的意思是指出 dbName 参数可以安全地以这种方式使用当服务器对值具有绝对控制权时.[/2019]

String updateString =
    "update " + dbName + ".COFFEES " +
    "set SALES = ? where COF_NAME = ?";
updateSales = con.prepareStatement(updateString);

Here are more.

ESAPI 目前没有提供 Sybase 编解码器,目前也没有开发的计划。

资料来源:我目前是 ESAPI 的项目联合负责人。

【讨论】:

  • 我正在维护一些庞大而古老的代码。其中通过复杂的for和if语句使用字符串连接方法来执行sql。它容易受到 sql 注入的影响。我不想用准备好的语句重写它们。我认为 OSWAP ESAPI 是保护 sql 注入的最简单方法。只需通过转义函数包装变量。并且不要破坏原来的逻辑。因此,它可以最大限度地减少副作用。不幸的是,没有 sybase 编解码器支持。因此,如果我使用 oracle 或 mysql 或 db2 编解码器。会发生什么?非常感谢您的回答!
  • 即使在 ESAPI 之后,它仍然容易受到 SQL 注入的攻击,因为它们仅用于紧急情况,通常我们在这些编解码器中转义的唯一内容是单引号,并且只会阻止一种SQLi 的。我们故意让它们像那样被破坏,因为正确的解决方案是“准备好的陈述”。您已被警告。
  • 您唯一的其他选择是为 Sybase 的语法编写 BNF 语法,并使用 yacc 或 Javacc 之类的工具来滚动您自己的解析器。该选项需要更多的测试,这就是为什么 OWASP 的建议是 Prepared Statements。所有测试都是为您完成的。
  • 而且大多数语言(尤其是 SQL)都包含特定于供应商的解析极端情况。 BNF 可能会破坏合法语法。
  • 如果您只是想要获得保护,您可以按照您的建议做,但我绝不会向我支持的任何应用程序团队推荐。如果钱是问题,向利益相关者解释,并让他们以书面形式签署风险。如果应用被黑,你不想被解雇。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
  • 1970-01-01
  • 2021-03-23
  • 1970-01-01
  • 1970-01-01
  • 2023-02-17
  • 2020-10-03
相关资源
最近更新 更多