【发布时间】:2011-09-06 01:42:11
【问题描述】:
我目前使用 MySql,但更喜欢 ODBC 解决方案以使其适应未来。
如何在将用户输入传递到 ODBC 数据库之前对其进行清理?
而且,当我这样做的时候,我将我的字符串用双引号括起来,例如"INSERT INTO VALUES(description) ""` - 但是如果文本本身包含双引号怎么办?
【问题讨论】:
-
你是指什么样的用户输入?例如,如果用户向您提供要运行的查询,那么您有很多工作要做。除了转义特殊字符,正如您所提到的,您还需要注意 SQL 注入等安全问题,并且您可能还希望限制可接受的语句集(例如,不要允许 DDL。)另一方面,如果用户只是给你数据并且你的应用程序使用 ODBC 将数据写入数据库,那么你不需要做任何事情,因为数据和你的 SQL 语句不会混合。
-
ODBC 将不会让它成为未来的证明,它会让它变慢,剥夺你的选择,让它变得有问题。任何数量的替代方案都可以,ZEOS 可以连接到大约 10 个数据库,ADO 也可以。
-
@Johan:我们需要更多地了解 Mawg 的项目,然后才能确定 ODBC 将明显比某些特定的替代方案慢。确实,ODBC 会减少选项,但同样我们需要更多地了解该项目才能知道这是否可能是一个问题。虽然 ODBC 实现起来确实有点复杂,但我不敢直言不讳地说它会使项目出错。最后,ODBC 确实可以更容易地切换到不同的 DBMS,这与任何其他抽象几乎相同。
-
+1 谢谢。必须是 ODBC。我别无选择。如果我想让它被接受,我会被告知我需要支持多个数据库。
标签: mysql delphi odbc sanitization input-sanitization