SQL Injection por querystring, lo más práctico es utilizar consultas parametrizadas:
Código:
strConnect = 'String de conexion
id = Request.QueryString("id")
strSQL = "SELECT campos FROM tabla WHERE id = ?" 'No estoy concatenando ningun valor
Set ObjConn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Set cmd = Server.CreateObject("ADODB.Command")
'Aqui vamos a pasar el valor, se necesita crear un parametro para este comando
Set param = cmd.CreateParameter("id", adInteger, adParamInput, 4, id)
cmd.Parameters.Append(param)
ObjConn.Open strConnect
'Abrimos el recordset
rs.Open cmd
Otra cosa que puedes hacer es utilizar una función que está circulando por ahí en el post de la librería de funciones y clases llamándola antes de concatenar el valor a tu consulta
Código:
strSQL = "SELECT campos FROM tabla WHERE id = " & funcionReemplaza(id)
Pero de nuevo, en mi opinión es más eficiente, ordenado y seguro parametrizar tus consultas.
Lectura obligada:
http://www.aspfaq.com/params.htm
Saludos