Foros del Web » Programando para Internet » ASP Clásico »

Seguridad contra inyección SQL

Estas en el tema de Seguridad contra inyección SQL en el foro de ASP Clásico en Foros del Web. Buenas noches: Tengo esta función Cita: Function depurarSQL(cadena) prohibidas = array("select","drop",";","--","insert","delete","xp_","/","","*","%","<",">","or","=","'","""","Or","OR"," oR","Select","SeLeCt","!","_",""""""," or "," and ", "(",")","update","delete","drop","-shutdown","--") miTemp = cadena If Not isNull(miTemp) Then For ...
  #1 (permalink)  
Antiguo 18/05/2012, 17:59
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Seguridad contra inyección SQL

Buenas noches:
Tengo esta función

Cita:
Function depurarSQL(cadena)
prohibidas = array("select","drop",";","--","insert","delete","xp_","/","","*","%","<",">","or","=","'","""","Or","OR"," oR","Select","SeLeCt","!","_",""""""," or "," and ", "(",")","update","delete","drop","-shutdown","--")
miTemp = cadena
If Not isNull(miTemp) Then
For J = 0 To uBound(prohibidas)
miTemp = Replace(miTemp,prohibidas(J),"")
Next
miTemp = Server.HTMLEncode(miTemp)
depurarSQL = miTemp
Else
'no pasa nada
End If
End Function
Y la invoco de esta forma

Temp="Select * From Lista Where nick='" & depurarSQL(Request("dato01")) & "' And Password='" & depurarSQL(Request("dato02")) & "'"

Funciona bien pero ¿hay algunas "palabras" más que podría agregar o algo que pudiera mejorarlo un poco más?

Gracias por el apoyo

Un saludo desde Lima, Perú
  #2 (permalink)  
Antiguo 30/05/2012, 03:20
 
Fecha de Ingreso: mayo-2012
Mensajes: 1
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Seguridad contra inyección SQL

Hola es mejor que utilices consultas parametrizadas por ejemplo:

Código:
<%
Dim Rs_consulta
Dim Rs_consulta_cmd
Dim Rs_consulta_numRows

Set Rs_consulta_cmd = Server.CreateObject ("ADODB.Command")
Rs_consulta_cmd.ActiveConnection = MM_conexionBD_STRING
Rs_consulta_cmd.CommandText = "SELECT * FROM Lista WHERE nick=? And Password=?" 
Rs_consulta_cmd.Prepared = true
Rs_consulta_cmd.Parameters.Append Rs_consulta_cmd.CreateParameter("nick", 200, 1, 255, Request("nick")) 
Rs_consulta_cmd.Parameters.Append Rs_consulta_cmd.CreateParameter("password", 200, 1, 255, Request("password"))
Set Rs_consulta = Rs_consulta_cmd.Execute
Rs_consulta_numRows = 0
%>
  #3 (permalink)  
Antiguo 30/05/2012, 06:16
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Respuesta: Seguridad contra inyección SQL

Muchas gracias por tu respuesta. No conocía el CrateParameter así que voy a investigar. Te comento luego como me fue.

Etiquetas: contra, inyección, seguridad, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:29.