我使用sybase数据库。

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

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

OracleCodec?
MySQLCodec的?
DB2Codec吗?
https://static.javadoc.io/org.owasp.esapi/esapi/2.0.1/org/owasp/esapi/codecs/package-summary.html

谢谢!

最佳答案

首先,不要使用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手册中的以下字词:

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

对所有数据库事务使用Prepared Statements或存储过程。在将近十年的工程设计中,我从未真正看到使用Prepared Statements对现实生活造成的损失。在大多数语言中,性能都会提高。对于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的项目联席主管。

关于java - 用于OSWAP ESAPI的Sybase编解码器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49375983/

10-13 04:56