【发布时间】:2009-04-23 12:42:37
【问题描述】:
我正在用 .NET2.0 编写一个程序,我需要在使用它们之前对输入进行转义。不幸的是,标准参数方法系统在我使用的系统中不能完全工作。使用 ODBCCommand 类我不能放置一个?语句的选择部分中的参数(这是我正在做的一点点技巧所必需的)而不会出错,因此我需要手动转义可能包含或不包含单引号(')的字符串。有什么建议吗?
编辑 - 示例 SQL:
如我所愿:
INSERT INTO TABLE_A (COLUMN_A, COLUMN_B)
SELECT (?, COLUMN_C)
FROM TABLE_B
WHERE COLUMN_D = ?
原样:
INSERT INTO TABLE_A (COLUMN_A, COLUMN_B)
SELECT ('INPUT_VALUE_HERE', COLUMN_C)
FROM TABLE_B
WHERE COLUMN_D = ?
编辑:Sybase ASE 是 DB 驱动程序,通过 ODBC
【问题讨论】:
-
你能举一个你试图执行的 SELECT 的例子吗?
-
如果这是列名或表名等,请不要忘记攻击者不需要单引号来进行注入。除此以外 ?应该可以工作,不是吗?
-
另外你用的是什么数据库?并非所有数据库都有相同的转义字符集,根据您在 SELECT 语句中的位置,您可能需要不同的转义字符。
-
提供的示例应该使用参数。什么是数据库,错误是什么?