Hola a todos de nuevo, llevava mucho tiempo sin poner nada por aqui, y se me ocurrio esto tras unos cuantos fallos de seguridad en mi web asi que aqui os lo dejo.Seguro que ha alguno ya se le habia ocurrido pero bueno, yo lo dejo aquí.
Actualmente la seguridad de muchas webs se ve afectada por intrusiones no autorizadas debido a que algien de maneras no muy buenas consige el password de algien que no le cae muy bien o simplemente para poder suplanterle la identidad. En estos casos lo que se hace para saber la password y podern entar en su sistema es probar por fuerza bruta hasta que dan con el pass bueno.Otro metodo es utilizar la inmensidad de buscadores que se basan en password guardados en una bd con su correspondiente hash para decirte cual es el pass.
Lo que se me ocurrio para que este metodo ya no sea viable sera este:
Al registrarse el usuario y poner su clave NO codificarla directamente.
sino añadirle mas informacion. veamos un ejemplo
Código PHP:
$password_encriptado = md5($password_del_usuario);
//eso NO
$password_encriptado = md5(md5($password_del_usuario));
//esta opcion muchos programas de fuerza bruta ya la utilizan por eso mi solucion fue esta
$pass1=md5($pasword_del_usuario);
$salto = md5("%&@¬antifuerza!bruta||por¬VGPASTOR¿?");
$password_encriptado = md5($salto.$pass1);
Creo que es buen metodo siempre que no desveles tus saltos ni el orden.Ademas lo puedes complicar todo lo que quieras añadiendo mas veces el mismo salto o incluso añadiendo saltos distintos. Ademas pense en poner 30 saltos y que se añadieran con un random solo 4 porejemplo y para recordar que saltos se habian puesto, se le añade al final del password 4digitos con el numero del salto.Luego para comprobar la contraseña solo tenias que deshacer todo lo anterior y listo.El codigo seria algo asi:
Código PHP:
$salt1 = "texto prueba salto1";
$salt2 = "texto prueba salto2";
$salt3 = "texto prueba salto3";
$salt4 = "texto prueba salto4";
$salt5 = "texto prueba salto5";
$salt6 = "texto prueba salto6";
$salt7 = "texto prueba salto7";
$salt8 = "texto prueba salto8";
$salt9 = "texto prueba salto9";
$salt10 = "texto prueba salto10";
$salt11 = "texto prueba salto11";
$salt12 = "texto prueba salto12";
$salt13 = "texto prueba salto13";
$salt14 = "texto prueba salto14";
$salt15 = "texto prueba salto15";
$salt16 = "texto prueba salto16";
$salt17 = "texto prueba salto17";
$salt18 = "texto prueba salto18";
$salt19 = "texto prueba salto19";
$salt20 = "texto prueba salto20";
$salt21 = "texto prueba salto21";
$salt22 = "texto prueba salto22";
$salt23 = "texto prueba salto23";
$salt24 = "texto prueba salto24";
$salt25 = "texto prueba salto25";
$salt26 = "texto prueba salto26";
$salt27 = "texto prueba salto27";
$salt28 = "texto prueba salto28";
$salt29 = "texto prueba salto29";
$salt30 = "texto prueba salto30";
$pass1 = md5($pas_usu)
$ns1 =rand(1,30);
$s1 = md5($salt.ns1);
$ns2 = rand(1,30);
$s2 = md5($salt.$ns2);
$ns3 = rand(1,30);
$s3 = md5($salt.$ns3);
$ns4 = rand(1,30);
$s4 = md5($salt.$ns4);
$passfinencrip = md5($s1.s2.$pas_usu.$s3.$s4);
$p_encrypt= $ns1.$ns2.$ns3.$ns4.$passfinencrip;
esto para encriptarle y ahora la comprobacion
Código PHP:
$password_del_usuario_al hacer_login_con_md5= md5($pasword_del_usuario_al hacer_login);
//Lo primero es saber que saltos se le han aplicado asi que cojemos los cuatro primeros caracteres que corres ponden a los saltos aplicados, del password guardado en la bd
$numero_del_salto_1 = $password_del_usuario_en_la_bd{0};
$numero_del_salto_2 = $password_del_usuario_en_la_bd{1};
$numero_del_salto_3 = $password_del_usuario_en_la_bd{2};
$numero_del_salto_4 = $password_del_usuario_en_la_bd{3};
//Codificamos los saltos
$salto_1_codificado = md5($salt.$numero_del_salto_1);
$salto_2_codificado = md5($salt.$numero_del_salto_2);
$salto_3_codificado = md5($salt.$numero_del_salto_3);
$salto_4_codificado = md5($salt.$numero_del_salto_4);
//les añadimos en el mismo orden que al guardar en el password encriptado del usuario que ha escriot en el login
$password_sin_el_numero_de_los _saltos = md5($salto_1_codificado.$salto_2_codificado.$password_del_usuario_al hacer_login_con_md5.$salto_3_codificado.$salto_4_codificado);
$password_a_comprobar_en_la_bd = $numero_del_salto_1.$numero_del_salto_2.$numero_del_salto_3.$numero_del_salto_4.$password_sin_el_numero_de_los _saltos;
parece complicado pero en la practica no lo es y puede ahorranos algunos disgustos.De aqui cada uno que saque sus propias conclusiones.
Un saludo y espero sus comentarios.
PD: No lo he probado asi que alomejor tiene algun error por algun lado, lo unico que quiero exponer aqui es el sistema si alguno lo quiere hacer funcionar y no sabe que falla que me avise y se lo dejo listo.