2010-08-26 17 views
5

Estoy a punto de tener que lidiar con algunos códigos SQL en ASP VBScript clásico.¿Cómo ejecuto una consulta SQL parametrizada en ASP clásico? ¿Y es seguro?

Tengo dos preguntas.

En primer lugar, en .net, estoy acostumbrado a utilizar los objetos de espacio de nombres System.Data.SqlClient para realizar consultas. Por ejemplo:

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

Me han dicho que usar una consulta parametrizada como tal hace que mi consulta sea segura contra ataques de inyección SQL.

Me gustaría saber cuál es el código equivalente para hacer una consulta de este tipo en ASP clásico con VBScript y qué precauciones de seguridad similares deben usarse para protegerse contra la inyección de SQL.

Respuesta

6

Hay objetos ADODB que básicamente hacen lo mismo. ADODB.Command object es el equivalente a SqlCommand. A partir de ahí, básicamente está haciendo lo mismo que en .NET.

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

Uso frecuentemente w3schools para obtener ayuda sobre ADO objects.

+2

Esto funciona pero es un poco engañoso. Siendo adodb, incluso si el parámetro se llama @id, y la llamada createParameter se llama "@id", creo que en realidad está usando parámetros posicionados (como si solo estuviera usando???). Entonces, si tiene que reemplazar varios valores, DEBE llamar a createParameter (...) cada vez en el orden apropiado. – Jagu

Cuestiones relacionadas