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

Seguridad en paginas asp 3

Estas en el tema de Seguridad en paginas asp 3 en el foro de ASP Clásico en Foros del Web. hola, por favor, si alguien puede guiarme, quizas es otor foro, me advirtieron este codigo es peligroso antes hackers: http://www.myweb.com/newsitem.asp?id=99 alguiwen peude guiarme como solucionar ...
  #1 (permalink)  
Antiguo 23/05/2007, 11:31
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 11 meses
Puntos: 0
Seguridad en paginas asp 3

hola, por favor, si alguien puede guiarme, quizas es otor foro, me advirtieron este codigo es peligroso antes hackers: http://www.myweb.com/newsitem.asp?id=99
alguiwen peude guiarme como solucionar ese agujero, supongo que por inyeccion sql.
Saludos!
  #2 (permalink)  
Antiguo 23/05/2007, 11:42
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 10 meses
Puntos: 98
Re: Seguridad en paginas asp 3

No entendí la pregunta, podrías elaborar más?

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 23/05/2007, 11:45
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 8 meses
Puntos: 535
Re: Seguridad en paginas asp 3

Hola, el enlace que colocaste no va a ninguna página.
__________________
...___...
  #4 (permalink)  
Antiguo 23/05/2007, 12:27
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 11 meses
Puntos: 0
Re: Seguridad en paginas asp 3

Si, perdonene, es que me prohibieron poner el aviso rela por al confidencialidad y toda esa mierda. Yo no estoy a favor pero bueno, me obligan a eso.LO que si se que el hacker o agente de seguridad envio mail con algo asi:
Website www.mysite.com has security vulnerabilities.
This site based on IIS, Active server pages and MS SQL Server 2005.
In order to defend site from attacks you have to check data send by user.
For example, when you display news your URL looks like:
http://www.mysite.com/newsitem.asp?id=99
where 99 is number of news in database

attackers can assume that <news number> is not filtered for numbers, so then can put in url:
id=99 or 1=@@version--
and SQL request to database will cause error, and display version of server to attacker.

Using this information attacker can get a lot of information:


Y aca me ponen "los hackers" , o quien haya sido un monton de informacion de las tablas,etc
Que podra ser?
Saludos
  #5 (permalink)  
Antiguo 23/05/2007, 12:43
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 10 meses
Puntos: 98
Re: Seguridad en paginas asp 3

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
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 23/05/2007, 15:36
Avatar de soorellana  
Fecha de Ingreso: mayo-2007
Mensajes: 9
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Seguridad en paginas asp 3

Otra forma sencilla de protegerte sería la siguiente:



Código:
<%
Dim id ' -----> Suponemos que así se llama 
		'la variable con al cual recuperas 
		'el id de la noticia a mostrar.
		
id = -1 ' ----> Le colocamos un valor inicial que no existe 
		'en la base de datos.
		
if request.form("id")<>"" then	'---> si el id no viene vacío.
	if isnumeric(request.form("id")) then '---> si el id es un numero
		id = request.form("id")
		' Si cumple ambas condiciones recuperamos el id
		' si no, siplemente lo ignoramos y dejamos que la consulta
		' se vaya con id = -1 lo cual no dará ningún resultado.
	end if
end if
%>
Saludos,

Sergio.
  #7 (permalink)  
Antiguo 24/05/2007, 02:32
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 10 meses
Puntos: 7
Re: Seguridad en paginas asp 3

Una funcioncita que chequea que todo sea ok (solo acepta letras y numeros)

Código:
function isValidData(esto)
     isValidData = false
     if len(esto) > 0 then
            dim cExp  
            set cExp = new RegExp
            with cExp
                   .Pattern = "^[a-zA-Z0-9]{3,8}$"
                   .IgnoreCase = True
                   .Global = True
            end with
            isValidData = cExp.test(esto)
    end if
end function
Espero te sirva :)


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #8 (permalink)  
Antiguo 24/05/2007, 11:30
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 11 meses
Puntos: 0
Re: Seguridad en paginas asp 3

Muchas gracias a los tres, voy a probar una por una cada alternativa y luego les comento, gracias por las molestias y por su ayuda, de verdad les debo una!.
  #9 (permalink)  
Antiguo 24/05/2007, 13:29
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 10 meses
Puntos: 98
Re: Seguridad en paginas asp 3

El único comentario que me queda por hacer (no por decir que las alternativas sugeridas son incorrectas) solo por ser un poco molestón es que no siempre quieres validar que solo sean números o letras y quizás no quieras tener diferentes aproximaciones para cada uno de tus queries (uno que valide números, otro que valide solo caracteres alfanuméricos, otro que valide otro tipo de caracteres, etc) sino tener un estándar de programación, por eso la sugerencia de parametrizar. De nuevo, no lo digo con intención de crear un debate, solamente como una consideración importante.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 29/05/2007, 13:29
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 11 meses
Puntos: 0
Re: Seguridad en paginas asp 3

Gracias Goldman, esta muy bueno eso que decis.Lo voy a tener en cuenta ahora mismo cuando reforme unas cosas. Gracias de nuevo amigo.
  #11 (permalink)  
Antiguo 26/06/2008, 03:25
 
Fecha de Ingreso: abril-2006
Mensajes: 69
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Seguridad en paginas asp 3

La opción de u_goldman me parece muy interesante. Muchas gracias.

Si necesitáis hacer una consulta con un AND, introduciendo dos valores, he probado con esta modificación, y parece que funciona:



usuario = Request.Form("wusuario")
clave = Request.Form("wclave")

sql = " SELECT * FROM usuarios WHERE usuario = ? "

Set rs = Server.CreateObject("ADODB.RecordSet")
Set cmd = Server.CreateObjetc("ADODB.Command")

Set param01 = cmd.CreateParameter("usuario", adInteger, adParamInput, 4, usuario)
cmd.Parameters.Append(param01)

sql = sql & " AND clave = ? "

Set param02 = cmd.CreateParameter("clave", adInteger, adParamInput, 4, clave)
cmd.Parameters.Append(param02)

rs.Open sql,Conn,cmd



Espero que os sea útil... y corregídmela si está mal, que soy bastante limitado en esto.

Saludos.
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 00:19.