如何在经典ASP中运行参数化SQL查询?它安全吗?

时间:2010-08-26 21:30:27

标签: asp-classic vbscript sql-injection

我将不得不处理经典ASP VBScript中的一些SQL代码。

我有两个问题。

首先,在.net中,我习惯使用System.Data.SqlClient命名空间对象来执行查询。例如:

Dim conn as New SqlConnection("Data Source=MyServer;uid=myUid;pwd=myPwd;Initial Catalog=myDataBase;"  
Dim cmd as New SqlCommand("Select fname From myTable where uid=@uid;", conn)  
cmd.Parameters.add(New SqlParameter("@uid",100323)  
conn.open()
Response.Write(cmd.ExecuteScalar())
conn.Close()

我被告知使用参数化查询可以使我的查询免受SQL注入攻击。

我想知道在使用VBScript的经典ASP中执行此类查询的等效代码是什么,必须使用类似的安全预防措施来防止SQL注入。

1 个答案:

答案 0 :(得分:6)

有ADODB对象基本上做同样的事情。 ADODB.Command对象相当于SqlCommand。从那里它基本上和.NET一样。

set cmd = Server.CreateOject("ADODB.Command")
cmd.CommandText = "select From Table where ID = @id")
set param = cmd.CreateParameter("@id", adInteger, adInput,0,0)

我经常使用w3schools获取有关ADO对象的帮助。