我有一些免费响应的文本字段,我不知道如何擦除它们以防止SQL注入。有任何想法吗?
答案 0 :(得分:16)
创建parameterized query,而不是将用户的输入连接到查询中。
以下是如何在经典asp中执行此操作: http://blog.binarybooyah.com/blog/post/Classic-ASP-data-access-using-parameterized-SQL.aspx
同样重要的是要注意,从SQL注入100%安全的唯一方法是参数化任何使用用户输入的sql语句,即使它在数据库中也是如此。示例:假设您通过参数化查询或存储过程获取用户输入。您可以安全地插入插件,但是您需要确保使用该输入的任何路线也使用参数。直接连接用户输入在任何地方都是一个坏主意,包括在db中。
答案 1 :(得分:0)
编辑:只是澄清一下。在sp中构建动态sql当然和在应用程序中执行它一样危险,但是将用户输入绑定到查询中将保护您免受sql注入,如此处所述(oracle特定的讨论,但该原则适用于其他地方):
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:23863706595353
它不是动态的sql 问题(所有sql在Oracle中都是动态的 实际上 - 甚至是静态的sql PRO * C / PLSQL!)。它是 构建“这个sql就是这个 问题。如果用户给你输入 - 它们应该被绑定到查询中 - 没有连接。第二个你 将用户输入连接到SQL中 - 好像你给了他们传递代码和你的能力 执行该代码。简单明了。