Kerozine 1-7: Un login en PHP o ASP
En ésta oportunidad vamos a ver como hacer para proteger alguna sección de nuestro sitio web exclusiva para miembros, mediante un simple pero seguro y efectivo Script programado en ASP o PHP. Hasta hace un timepo la mayoría de los logins de los sites se hacían en CGI o HTML, pero éstos fueron diminuyendo gradualmente debido a su bajo grado de seguridad y su enorme cantidad de bugs y vulnerabilidades. Igualmente ahora vamos a hacer uno simple, sin base de datos, sino que con un login de mínima seguridad (mismo user y password para todos). El login se basa en 2 documentos o archivos, el primero (HTML) es en el cual se hallan las username y password boxes y el segundo documento (ASP o PHP) el que realiza la autenticación e indica el destino según el resultado de ésta.
Documento 1: Acá vamos a ver el código del simple formulario para el login, el cual es HTML puro, por lo que puede ponerse en cualquier servidor y luego hacer una llamada al PHP o ASP para realizar la autenticación.
<HTML>
<HEAD>
<TITLE>Ingrese su User y contraseña </TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<FORM METHOD=POST ACTION="localizaciondel.asp_o_del.php">
User:<INPUT TYPE="text" NAME="user"><br>
Password:<INPUT TYPE="password" NAME="pass">
<INPUT TYPE="reset" value="Cancel"><INPUT TYPE="submit" value="Entrar">
</FORM>
</BODY>
</HTML>
Documento 2: este es el archivo más importante de todos, y puede ser tanto un ASP (para servidores con Windows NT) como un PHP (para servidores Apache). Acá abajo veremos el código de cada uno de ellos, que es tecnicamente muy pero muy simple, explicando que sucede en cada línea de código. Editar el código preferentemente con NotePad o Wordpad y guardar con atributos sólo texto.
ASP: autent.asp
<%
'se declaran las variables
dim id, pass
'se definen las variables
user=request.form("user")
pass=request.form("pass")
'se crea una condicion que compara los datos enviados por el formulario
'y si son iguales a los ya puestos como correctos muestra una pagina y
'si son incorrectos muestra otra
if user="usuario" and pass="password" then
%>
<!-- Aca va el html de tu sitio si el password es correcto -->
<HTML>
<HEAD>
<TITLE> EL PASSWORD ES CORRECTO</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<font color="#000000" size="2" face="verdana">El password es correcto</font>
</BODY>
</HTML>
<% else %>
<!-- Si no es correcto lo que quieras decir va acá -->
<HTML>
<HEAD>
<TITLE> EL PASSWORD ES INCORRECTO</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<font color="#000000" size="2" face="verdana">El password es incorrecto</font>
</BODY>
</HTML>
<% end if %>
PHP: autent.php
<?
//se declaran las variables
//se definen las variables
$user=$HTTP_POST_VARS["user"];
$pass=$HTTP_POST_VARS["pass"];
//se crea una condicion que compara los datos enviados por el formulario
//y si son iguales a los ya puestos como correctos muestra una pagina y
//si son incorrectos muestra otra
if ($user=="usuario" && $pass=="password")
{
?>
<!-- Aca va el html de tu sitio si el password es correcto-->
<HTML>
<HEAD>
<TITLE> EL PASSWORD ES CORRECTO</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<font color="#000000" size="2" face="verdana">El password es correcto</font>
</BODY>
</HTML>
<!-- Aca termina el html de tu sitio si el password es correcto-->
<? }
else
{
?>
<!-- Si no es correcto lo que quieras decir va acá -->
<HTML>
<HEAD>
<TITLE> EL PASSWORD ES INCORRECTO</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<font color="#000000" size="2" face="verdana">El password es incorrecto</font>
</BODY>
</HTML>
<!-- Si no es correcto lo que quieras decir va arriba -->
<? } ?>
TESTEO:
Para testear el login antes de subirlo a Internet deberán tener instalado dependiendo del lenguaje usado, ASP o PHP, el Personal Web Server o el Internet Information server de microsoft o el Apache para Linux, BSD o la plataforma que sea respectivamente. Igualmente lo más recomendable es ir probándolo directamente en nuestro servidor web, ya que la instalación del PWS o Apache en nuestra PC, nos hace correr un gran riesgo, más en el caso del PWS por su baja seguridad y gran cantidad de vulnerabilidades, como ya es común en los productos de nuestro amigo Billi Puertas.
INSTALACION Y SEGURIDAD:
Desde el punto de vista de seguridad, el login no presenta ningún bug conocido hasta el momento y ha sido sujeto a varios testeos y pruebas de seguridad, incluyendo un desafío presentado en el web site de Hackemate (Http://www.hackemate.com.ar) en el que se desafiaba a hackear el login (en su versión PHP), y este resultó inhackeable, sin ganadores, entre unos más o menos 800 participantes según los logs.
La única forma de hacerle un bypass o "saltar" el login sería hackeando el servidor y viendo el código fuente de los ASP o PHPs, pero eso es tema del servidor y no es influído por este scripting login.
Una tool de ayuda:
*ASP 2 PHP -----> este programita nos convierte códigos fuentes asp en PHP.