在经典ASP中防止对自由响应文本字段的SQL注入

时间:2010-01-11 20:20:15

标签: sql-server asp-classic sql-injection

我有一些免费响应的文本字段,我不知道如何擦除它们以防止SQL注入。有任何想法吗?

2 个答案:

答案 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)

致电stored procedure

编辑:只是澄清一下。在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中    - 好像你给了他们传递代码和你的能力   执行该代码。简单明了。