防止经典ASP中的*响应文本字段上的SQL注入

问题描述:

我有一些*响应的文本字段,我不确定如何擦除它们以防止SQL注入。有任何想法吗?防止经典ASP中的*响应文本字段上的SQL注入

+0

如果您搜索了http://*.com/questions/tagged/sqlinjection,您会自己找到答案。 – 2010-01-11 20:34:48

+1

@John你的意思是http://*.com/questions/tagged/sql-injection+asp-classic,但其中一个被标记为重复。 – cregox 2010-08-13 19:05:25

创建一个parameterized query而不是将用户的输入连接到查询中。

这里是如何在传统的ASP做到这一点: http://blog.binarybooyah.com/blog/post/Classic-ASP-data-access-using-parameterized-SQL.aspx

同样重要的是要注意,你可以从SQL注入100%安全的唯一方法是参数化使用用户输入的任何SQL语句,甚至一旦它在数据库中。示例:假设您通过参数化查询或存储过程进行用户输入。插入时您会很安全,但是您需要确保使用该输入的任何东西也使用参数。直接连接用户输入在任何地方都是一个坏主意,包括db内部。

+2

如果您必须编写经典的ASP,请在JScript中执行,更好!而且,IIRC也表现更好。 – RedFilter 2010-01-11 20:45:56

+2

@OrbMan:这是怎么一回事?如果您不介意隔离自己,那么JScript更好,但绝大多数ASP都在VBScript中。坦率地说,如果你不得不使用经典的ASP在VBScript中执行它,那么整合示例就容易多了,而且对于其他典型的ASP开发者来说更​​容易阅读。 – AnthonyWJones 2010-01-12 11:47:41

致电storedprocedure

编辑:只是澄清。在sp中构建动态sql当然可能与在应用程序中构建动态sql一样危险,但将用户输入绑定到查询中可以防止sql注入,如此处所述(特定于oracle的讨论,但其他原理适用):

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:23863706595353

这不是动态SQL这是 问题(所有SQL是Oracle 实际动态 - 即使是在 PRO * C/PLSQL静态SQL)。这是sql的“ 构造”,即 问题。如果用户给你输入 - 他们应该绑定到查询 - 不连接。第二个 将用户输入连接到您的SQL --就好像您让他们能够传递您的代码,并且您执行该代码。干净利落。

+3

不要相信它。存储过程可以防范SQL注入漏洞是一个谬论。您可能会像在应用程序代码中那样在过程中构建不安全的动态SQL查询。 – 2010-01-11 20:40:26

+0

我不是主张在sp中构建动态sql,而是将文本字段条目作为参数提供给sp中的参数化语句。 – davek 2010-01-11 21:10:55