2010-08-26 9 views
5

मैं के बारे में क्लासिक एएसपी 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 [email protected];", conn) 
cmd.Parameters.add(New SqlParameter("@uid",100323) 
conn.open() 
Response.Write(cmd.ExecuteScalar()) 
conn.Close() 

मुझे बताया गया है कि इस तरह के रूप में एक पैरामिट्रीकृत क्वेरी का उपयोग कर अपनी क्वेरी एसक्यूएल इंजेक्शन हमलों से सुरक्षित बनाता है।

मुझे पता है कि VBScript और क्या इसी तरह की सुरक्षा सावधानियों के साथ क्लासिक एएसपी में इस तरह के एक प्रश्न करने के लिए बराबर कोड है क्या एसक्यूएल इंजेक्शन से सुरक्षा के लिए इस्तेमाल किया जाना चाहिए चाहते हैं।

उत्तर

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 का उपयोग करें।

+2

यह काम करता है लेकिन थोड़ा भ्रामक है। Adodb होने के नाते, यह भी सोचा कि वह पैरामीटर @id नाम दिया गया है, और createParameter कॉल का नाम "@id" है, मुझे विश्वास है कि यह वास्तव में स्थित पैरामीटर का उपयोग कर रहा है (जैसे कि आप बस उपयोग कर रहे थे???)। इसलिए यदि आपके पास प्रतिस्थापित करने के लिए कई मान हैं, तो आपको उपयुक्त आदेश में प्रत्येक बार createParameter (...) को कॉल करना होगा। – Jagu

संबंधित मुद्दे