2010-08-26 11 views
5

Tôi sắp phải giải quyết một số mã SQL trong ASP VBScript cổ điển.Làm cách nào để chạy truy vấn SQL được tham số hóa trong ASP cổ điển? Và nó có an toàn không?

Tôi có hai câu hỏi.

Đầu tiên, trong .net, tôi đã quen sử dụng đối tượng không gian tên System.Data.SqlClient để thực hiện truy vấn. Ví dụ:

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 [email protected];", conn) 
cmd.Parameters.add(New SqlParameter("@uid",100323) 
conn.open() 
Response.Write(cmd.ExecuteScalar()) 
conn.Close() 

Tôi đã được thông báo rằng việc sử dụng truy vấn tham số như vậy làm cho truy vấn của tôi an toàn khỏi các cuộc tấn công SQL injection.

Tôi muốn biết mã tương đương để thực hiện truy vấn như vậy trong ASP cổ điển với VBScript và những biện pháp phòng ngừa an ninh tương tự nào phải được sử dụng để bảo vệ chống lại SQL injection.

Trả lời

6

Có các đối tượng ADODB về cơ bản giống nhau. đối tượng ADODB.Command tương đương với SqlCommand. Từ đó nó về cơ bản cũng giống như trong .NET.

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

Tôi thường xuyên sử dụng w3schools để được trợ giúp về các đối tượng ADO.

+2

Tác phẩm này nhưng hơi gây hiểu nhầm. Là adodb, thậm chí nghĩ rằng tham số của anh ta được đặt tên @id và lệnh gọi createParameter được đặt tên là "@id", tôi tin rằng nó thực sự đang sử dụng các tham số định vị (như thể bạn vừa mới sử dụng???). Vì vậy, nếu bạn có nhiều giá trị để thay thế, bạn PHẢI gọi createParameter (...) mỗi lần theo thứ tự thích hợp. – Jagu