Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/05/2005, 00:56
Paharillo
 
Fecha de Ingreso: marzo-2005
Ubicación: Vitoria
Mensajes: 49
Antigüedad: 20 años, 2 meses
Puntos: 0
problemas para la función de sql injection

Hola! Estoy utilizando sin éxito una funcion de la biblioteca para que no te metan sentencias sql al logearse y puedo entrar en mi página tranquilamente con 'or' '='. Por que no hace los replaces?. Bueno aqui va el código.Soy muy zoquete y seguro que es una chorrada.

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<style type="text/css">
<!--
body,td,th {
color: #FFFFFF;
}
body {
background-color: #404040;
}
-->
</style>
<% Session.TimeOut = 360 %>
<%

'Para los redireccionamientos
Response.Buffer=True

Dim oConn, rs, SQL, nombre, password

'Recogemos el formulario
nombre=Trim( Request.Form("Nombre") )
password=Trim ( Request.Form("Password"))

nombre = trim(nombre)
nombre = lcase(nombre)
nombre = replace(nombre,"=","")
nombre = replace(nombre,"'","")
nombre = replace(nombre,"""""","")
nombre = replace(nombre," or ","")
nombre = replace(nombre," and ","")
nombre = replace(nombre,"(","")
nombre = replace(nombre,")","")
nombre = replace(nombre,"<","[")
nombre = replace(nombre,">","]")
nombre=replace(nombre,"--","")
nombre=replace(nombre,"select","")
nombre=replace(nombre,"insert","")
nombre=replace(nombre,"update","")
nombre=replace(nombre,"delete","")
nombre=replace(nombre,"drop","")
nombre=replace(nombre,"-shutdown","")
nombre=replace(nombre,"--","")
%>
<%
password = trim(password)
password= lcase(password)
password= replace(password,"=","")
password = replace(password,"'","")
password = replace(password,"""""","")
password = replace(password," or ","")
password = replace(password," and ","")
password = replace(password,"(","")
password= replace(password,")","")
password= replace(password,"<","[")
password= replace(password,">","]")
password=replace(password,"--","")
password=replace(password,"select","")
password=replace(password,"insert","")
password=replace(password,"update","")
password=replace(password,"delete","")
password=replace(password,"drop","")
password=replace(password,"-shutdown","")
password=replace(password,"--","")
%>
<%

if nombre="" then
MostrarFormulario
else


set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("ing.mdb")&";"
SQL="SELECT Id_USU, Log, PassFROM usu WHERE
Login='"&nombre&"' AND Password='"&password&"'"

'Ejecutamos consulta
set rs=oConn.Execute(SQL)

if rs.EOF then


Session("ID")=Cint(0)
Response.Write("Lo siento, no existe ese usuario/contraseña.")
else

SESION
Session("ID")=CInt(rs.Fields("ID_Usuario"))
Response.Redirect("principal.asp")
end if

end if





Sub MostrarFormulario

Response.Write("<FORM METHOD=""post"" ACTION=""login.asp"">")
Response.Write("<INPUT TYPE=""text"" NAME=""Nombre""><BR>")
Response.Write("<INPUT TYPE=""password"" NAME=""Password""><BR>")
Response.Write("Entre su nombre de usuario y contraseña <BR>")
Response.Write("<INPUT TYPE=""submit""><BR>")
End Sub 'MostrarFormulario

%>


<html>
<head>
<title>NOVATIS</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

</body>
</html>

Antes he intentado utilizarla con una función para no tener que escribir dos veces pero como no funcionaba lo he puesto así.
Un saludo máquinas.
__________________
En la oficina todo son mujers menos yo y me estan dando por el culo... algo falla :golpeado: