Hace años que utilizó SMF, hoy me cruce en el foro con un post interesante:
Inicio de sesión SMF a través de hash de contraseña
En resumen se argumenta que es posible acceder a SMF mediante una contraseña hasheada (haciendo referencia a que gracias a esto, no sirve de nada el hash ante un posible robo de la base de datos).
Esto ya que mediante el método POST que utiliza el formulario de login lo que se hace es enviar la contraseña cifrada + la sesión ID.
Es decir:
Código
SHA1(hash + session_id)
Código
<form action="https://tuforo.ejemplo/index.php?action=login2" name="frmLogin" id="frmLogin" method="post" accept-charset="UTF-8" onsubmit="hashLoginPassword(this, 'add5f76205f957b650bb0a5aa71e6ccd');"> <!-- Viendo esto en el onsubmit-->
¿Es realmente es esto posible o entendí mal? Supuestamente está "solucionado" en 2.1.
Edit:
Código
//Función mencionada encargada del hash que viene por defecto en SMF. function hashLoginPassword(doForm, cur_session_id) { // Compatibility. if (cur_session_id == null) cur_session_id = smf_session_id; if (typeof(hex_sha1) == 'undefined') return; // Are they using an email address? if (doForm.user.value.indexOf('@') != -1) return; // Unless the browser is Opera, the password will not save properly. if (!('opera' in window)) doForm.passwrd.autocomplete = 'off'; doForm.hash_passwrd.value = hex_sha1(hex_sha1(doForm.user.value.php_to8bit().php_strtolower() + doForm.passwrd.value.php_to8bit()) + cur_session_id); // It looks nicer to fill it with asterisks, but Firefox will try to save that. if (is_ff != -1) doForm.passwrd.value = ''; else doForm.passwrd.value = doForm.passwrd.value.replace(/./g, '*'); }
Saludos.