ESPAÑOL: ¡Bienvenido! Es la página inicial de OSIRIS LMS. Regístrese hoy mismo y obtenga acceso a todos nuestros CURSOS GRATUITOS. Clic aquí para registrarse ya. Hemos desarrollado una amplia gamma de cursos “online” (Programación, Multimedia, 3D, Habilidades suaves, etc.), disponibles 24X7. Para más detalle consulte la lista de Cursos Disponibles. Si tiene problemas con el acceso a la plataforma, vea el Tour Virtual de Osiris LMS. También puede consultar la sección de FAQ’s o enviar Solicitud de Soporte Técnico.

ForoForo de discusión
Una pequeña falla de seguridad por falta de conocimientos
Buscador:
Foro > ASP > Una pequeña falla de seguridad por falta de conocimientos

Enviado por: Texto del mensaje
Gustavo Daniel Stortoni Koroluk
Nivel : Estudiante
Mensajes : 7
> Perfil
Escrito el : Jueves 13-07-2006 A las : 05:10 ( > un mes )
Asunto : Una pequeña falla de seguridad por falta de conocimientos
Les voy a explicar una falla que descubrí en asp durante mis años de programación.. Es muy sencilla de solucionar pero para una persona que recién comienza puede ser vital.


Cuando uno programa en ASP el código se sustenta en HTML y varias veces realizamos el bien ponderado inicio de sesión esto consta generalmente de que un usuario cualquiera ingrese a nuestro sistema validándose mediante un nombre de usuario y una contraseña, cuando un programador realiza esta acción generalmente coloca dentro de una pagina las cajas de texto correspondiente y un botón para que ejecute la acción de validar los datos ingresados.. Pero imaginen este escenario.


Estamos realizando la página de una empresa en la cual el nombre de usuario de las personas puede ser el Rut o algún nick además de una contraseña personal de cada uno.. Por lo tanto nuestra consulta a la Base de datos seria algo así.


Colocare como ejemplo una Tabla llamada usuarios la cual contendrá los datos necesarios para la validación del ingreso


Select * from Usuarios where nom_usu=’”& request(“nom_usu”) &”’ and pass = ‘”& request(“pass”) &”’ where vigencia = ‘V’”


Esta consulta realiza una pregunta sencilla... los parámetros que me enviaron coinciden con alguno que este en la tabla Usuarios y que además este vigente en el sistema.


Aquí tenemos 2 posibles respuesta “Existe” o “No Existe”


Por lo tanto el sistema deberá enviar al usuario al lugar que corresponde según la respuesta.


Pero que pasaría si una persona coloca en la casilla donde se le pide ingresar el nombre de usuario lo siguiente.


Prodriguez&”’”’ y presiona el botón enviar.. Como debe ser el sistema efectuara la comprobación de los datos pero si vemos nuestro código sucederá lo siguiente..


Select * from Usuarios where nom_usu=’”& Prodriguez&”’”’&”’ and pass = ‘”& request(“pass”) &”’ where vigencia = ‘V’”


en ASP el apostrofe simple es el método de comentario por lo tanto el usuario esta enviando un nombre existente pero corta la cadena o nuestra consulta comentando la validación de la pass y la vigencia por lo tanto entrara a nuestro sistema sin saber la contraseña.


Esto se soluciona encapsulando la consulta o mejor dicho colocándola en un procedimiento almacenado de nuestra Base de Datos ya que este método si o si necesita de ambos parámetros para efectuar la consulta.


Es muy peligroso dejar que un usuario cualquiera ingrese código HTML, ASP a nuestra Base de Datos ya que pueden producir una violación al sistema o simplemente ingresar material no deseado.


En estricto rigor una pagina ASP no puede tener consultas de Base de Datos explicitas en el código siempre es mejor encapsularlas.



Espero que esto les haya quedado claro y que les sirva.


Saludos Gustavo..