jaja ráyos, lo que pasa que en ajax (js) no es posible encriptar facilmente, por lo que creí que al mandar la informacion por privado el sniffer no lo pillaría, ahora que veo que si, la unica solucion lógica es encriptar y mandar... prueba este código, lo hize para que ENCRIPTARA ANTES y luego envie datos, espero este no sea interceptado, seria mas facil si js tuviera algun metodo de encriptacio pero como no lo tiene me las arregle asi:
form HTML:
Código: Seleccionar todo
<html>
<head>
<script language="JavaScript" type="text/javascript" src="funciones.js"></script>
</head>
<body>
Usuario: <input type="text" name="id" id="user"/>
Pass: <input type="password" name="p" id="p" />
<input name="Login" type="button" id="Login" value="Login" />
<div id="mostrar"></div>
</body>
</html>
pass.php
Código: Seleccionar todo
<?php
$usr = $_GET ['id'];//obtenemos los datos con get porque el javascript los envia con ese metodo
$pwd = $_GET ['p'];//podriamos usar $_POST pero se me hace mas incomodo en el js
if($usr=='' & $pwd != '')//aqui recibimos la contraseña para encriptar
{
$pwd=md5($pwd);//encriptamos
echo $pwd;//enviamos
}
else
{
if (( $usr == "usuario" ) && ( $pwd == md5("password") ))//comparamos
{
echo "Login Correcto";//si todo va bien mostramos el mensaje y redireccionamos
header("location: http://www.indetectables.net");
}
else
{
echo "Login incorrecto";//si no, que se joda
header("location: login.html?loginfailed=yes");
}
}
?>
funciones.js
Código: Seleccionar todo
//by LInkgl
var conectar;
var passEncryptada;
var conectar1;
//Estas funciones son OPCIONALES para simplificar el uso de addEvetnListener o attachEvent
//dependiendo del navegador para que ande en TODOS los navegadores, ojo yo no la invente
// me la aprendi de donde aprendi ajax
function addEvent(elemento,objeto,funcion,boleano)
{
if (elemento.attachEvent)
{
elemento.attachEvent('on'+objeto,funcion);
return true;
}
else
{
if (elemento.addEventListener)
{
elemento.addEventListener(objeto,funcion,boleano);
return true;
}
else
{
return false;
}
}
}
//esta funcion hace lo mismo simplificar para ambos navegadores la peticion de xmlhttp
//porque el puto de ie nos quiere joder la vida y usa un control active, los demas xmlhttprequest
function HttpRequest()
{
var xmlHttp=null;
if (window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
if (window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}
return xmlHttp;
}
//aplicamos la funcion simplificada que al cargar totalmente la pagina inicien las funciones
addEvent(window,'load',inicio,false);
//la primer funcion al presionar el boton login se activa la funcion comparar
function inicio()
{
var dom=document.getElementById('p');
addEvent(dom,'blur',encriptar,false);//aqui cambie el evento a cuando se desenfoque la pass la encripte
}
function encriptar()//cree la funcion encriptar
{
var pass=document.getElementById('p').value;//obtenemos la pass
var bton=document.getElementById('Login');//el login
conectar1=HttpRequest();//abrimos conexion
conectar1.onreadystatechange=obtenerPass;//abrimos la funcion de obtener la pass YA encriptada
conectar1.open('GET','pass.php?p='+pass+'&id=');//mandamos SOLO La pass para poder encriptarla
conectar1.send(null);//aqui no enviamos nada
addEvent(bton,'click',comparar,false);//añadimos el evento clic al login para cuando se presione ir a la funcion comparar
}
function obtenerPass()//obtenemos las pass
{
if(conectar1.readyState==4)//si estamos conectados recibimos la pass encriptada
{
passEncryptada=conectar1.responseText;
}
else
{
document.getElementById('mostrar').innerHTML='Espere...';//si no mostramos un mensaje de espere para que sea mas profesional xD
}
}
//esta funcion obtiene todos los campos con sus respectivos valores
function comparar()
{
var boton=document.getElementById('Login');
var user=document.getElementById('user');
//activamos la peticion http
conectar=HttpRequest();
//si el estado cambia o es diferente a 0 iniciamos la funcion dibujar (mostrar los datos)
conectar.onreadystatechange=dibujar;
//abrimos una peticion por http con el metodo GET la pagina en este caso pass.php y los datos en variables
conectar.open('GET','pass.php?p='+passEncryptada+'&id='+user.value,true);
//aqui enviariamos datos si usaramos el metodo $_POST pero me da flojera
conectar.send(null);
}
//aca mostramos en pantalla
function dibujar()
{
if(conectar.readyState==4)//si estamos conectados mostramos la respuesta del php
{
document.getElementById('mostrar').innerHTML=conectar.responseText;
}
else
{
document.getElementById('mostrar').innerHTML='Espere...';//si no mostramos un mensaje de espere para que sea mas profesional xD
}
}
El form no ha cambiado
EL php un poco
El js si xD
ahora nos queda orar hermanos para que funcione, xD y si el sniffer se convirtio en todo un reto, pero se que podemos pasarlo xD aver te explico lo que no entiendes esta parte:
Código: Seleccionar todo
function addEvent(elemento,objeto,funcion,boleano)
{
if (elemento.attachEvent)
{
elemento.attachEvent('on'+objeto,funcion);
return true;
}
else
{
if (elemento.addEventListener)
{
elemento.addEventListener(objeto,funcion,boleano);
return true;
}
else
{
return false;
}
}
}
Es una funcion que aprendí donde aprendi Ajax, aunque NO es necesaria, y el JS NO siempre se inicia asi se inicia como sea no tiene una orden si usas funciones, el orden esta en como llamas a las funciones... te explico mira, esa funcion se crea por una razon:
que lea el codigo en TODOS los navegadores, lo que pasa que la funcion addEventListener es una funcion que me sirve para insertar funciones a los objetos, pero lo que pasa que el fuck navegador de IE (tenia que ser) no lee esa funcion, ie reemplaza esa funcion por attachEvent, entonces lo que hacemos ahi es si no funciona attachEvent usamos addEventListener, osea para que si no funcione una use la otra, ahora
elemento,objeto,funcion,boleano
esas son VARIABLES, son los parametros que debe recibir la funcion, elemento=id del campo por ejemplo <input type="text" ID="esto"> eso identifica al objeto de texto, entonecs elemento es para obtener el id, objeto, es el evento, la funcion que se usara ya sea (onClick, onBlur, onFocus) etc, como vb6, funcion es la funcion que se va a ejecutar cuando se ejecute el evento, boleano es true o false, por defecto es false prueba el codigo anterior y me cuentas, estoy ansioso
//mHmm..