2010-08-26 8 views
5

Sto per avere a che fare con qualche codice SQL nel classico ASP VBScript.Come si esegue una query SQL con parametri nell'ASP classico? Ed è sicuro?

Ho due domande.

Innanzitutto, in .net, sono abituato a utilizzare gli oggetti dello spazio dei nomi System.Data.SqlClient per eseguire query. Per esempio:

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() 

mi è stato detto che l'utilizzo di una query con parametri in quanto tale, rende la mia interrogazione al sicuro da attacchi di SQL injection.

Mi piacerebbe sapere qual è il codice equivalente per eseguire una query di questo tipo in ASP classico con VBScript e quali precauzioni di sicurezza simili devono essere utilizzate per evitare l'iniezione SQL.

risposta

6

Ci sono oggetti ADODB che fanno praticamente la stessa cosa. L'oggetto ADODB.Command è l'equivalente di SqlCommand. Da lì sta praticamente facendo lo stesso di .NET.

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

Mi capita spesso di uso w3schools aiuto sugli oggetti ADO.

+2

Questo funziona ma è leggermente fuorviante. Essendo adodb, anche pensato che parametro è chiamato @id, e la chiamata a createParameter si chiama "@id", credo che in realtà stia usando i parametri posizionati (come se steste usando solo??). Quindi se hai più valori da sostituire, DEVI chiamare createParameter (...) ogni volta nell'ordine appropriato. – Jagu

Problemi correlati