Argentina

Apr 2021
36 Temas
128 Mensajes
0
Es más cada vez que un usuario inicie sesión puedes usar
password_needs_rehash esto actualizará el hash generado anteriormente, pero no cambiará la contraseña del usuario.
Es mejor usarlo con el algoritmo
PASSWORD_ARGON2ID (se llama Argon2id), ya que como tercer parámetro se puede añadir esto:
$password = '#HolaMundo26';
$hash = password_hash($password, 'PASSWORD_ARGON2ID', [
'memory_cost' => 1 << 17, // 128 MB
'time_cost' => 4,
'threads' => 2,
]); // Sale: $argon2id$v=19$m=131072,t=4,p=2$dC9TWFp5bWVGYjFzRVVLaQ$3/d6h86ds1nx5n6nKjyPlRnpBiO/W8M+9x973ApLolQ
Dependiendo de la configuración que se utilice lo hará más difícil
Accede al servidor de Discord y descarga ZCode | PHPost
Discord: discord.gg/StWZtrt2DE (lo tienen que escribir)
Argentina

Apr 2021
36 Temas
128 Mensajes
1
(05-16-2026, 02:33 AM)Tronlar escribió: Debes agradecer para ver el contenido... (05-16-2026, 01:01 AM)Miguel92 escribió: Debes agradecer para ver el contenido...Es más cada vez que un usuario inicie sesión puedes usar password_needs_rehash esto actualizará el hash generado anteriormente, pero no cambiará la contraseña del usuario.
Es mejor usarlo con el algoritmo PASSWORD_ARGON2ID (se llama Argon2id), ya que como tercer parámetro se puede añadir esto:
$password = '#HolaMundo26';
$hash = password_hash($password, 'PASSWORD_ARGON2ID', [
'memory_cost' => 1 << 17, // 128 MB
'time_cost' => 4,
'threads' => 2,
]); // Sale: $argon2id$v=19$m=131072,t=4,p=2$dC9TWFp5bWVGYjFzRVVLaQ$3/d6h86ds1nx5n6nKjyPlRnpBiO/W8M+9x973ApLolQ
Dependiendo de la configuración que se utilice lo hará más difícil
Sí, tienes razón, haciendo pruebas en la demo con el registro, se me ocurrió eso, iba a subir el script hoy, pero voy a implantarle lo que dices y un error que le visto hoy en las fotos, no las he utilizado nunca y al probarlas hoy lo he visto.
Mañana si me da tiempo lo hago y lo subo, tengo que salir a reparar una avería de luz y no sé a qué hora voy a llegar. Gracias.
Nota: Tiene un error de sintaxis, PHP el algoritmo se pasa como constante nativa, sin comillas, tiene que ser así.
$password = '#HolaMundo26';
$opciones = [
'memory_cost' => 1 << 17, // 128 MB
'time_cost' => 4, // 4
'threads' => 2, // 2
];
$hash = password_hash($password, PASSWORD_ARGON2ID, $opciones);
No me percate de eso

, habré copiado las comillas porque en el archivo lo tengo así ...
if(defined('PASSWORD_ARGON2ID')) {
Accede al servidor de Discord y descarga ZCode | PHPost
Discord: discord.gg/StWZtrt2DE (lo tienen que escribir)
Argentina

Apr 2021
36 Temas
128 Mensajes
05-16-2026, 01:34 PM
(Última modificación: 05-16-2026, 01:37 PM por
Miguel92.)
1
(05-16-2026, 11:23 AM)Tronlar escribió: Debes agradecer para ver el contenido...Ya se lo he puesto, ayer por la noche me puse a estudiarlo y lo he terminado esta mañana, ya funciona bien el registro y el login, lo he puesto así,
le he añadido addslashes() porque el hash de Argon2id contiene caracteres como $ y podrían dar problemas sin escapar.
$new_hash = defined('PASSWORD_ARGON2ID')
? password_hash($_POST['pass'], PASSWORD_ARGON2ID, ['memory_cost' => 65536, 'time_cost' => 4, 'threads' => 2])
: password_hash($_POST['pass'], PASSWORD_BCRYPT);
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_password = \''.addslashes($new_hash).'\' WHERE user_id = \''.$data['user_id'].'\'') or exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') );
No, el símbolo $ no va a dar problemas, además el hash no contiene comillas por lo cual
addslashes no va a ser nada en realidad, crea una clase para centralizar lo del password hash, así solo creas la contraseña y la verificas, evitándote copiar todo eso.
$algorithm = defined('PASSWORD_ARGON2ID') ? PASSWORD_ARGON2ID : (
defined('PASSWORD_ARGON2I') ? PASSWORD_ARGON2I : PASSWORD_BCRYPT
);
$options = ['cost' => 12]; // default
if (in_array($algorithm, [PASSWORD_ARGON2ID, PASSWORD_ARGON2I], true)) {
$options = [
'memory_cost' => 1 << 16, // 16 > 64MB (65536 KiB) | 17 > 128 MB (131072 KiB)
'time_cost' => 4,
'threads' => 2
];
}
$new_hash = password_hash($tsData['user_password'], $algorithm, $options);
$uid = (int)$data['user_id'];
// Para que sea mucho más legible convendría usarlo asi
db_exec(array(__FILE__, __LINE__), 'query', "UPDATE u_miembros SET user_password = '{$new_hash}' WHERE user_id = {$uid}") or exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') );
addslashes: Registrate o inicia tu sesión para ver este contenido
Accede al servidor de Discord y descarga ZCode | PHPost
Discord: discord.gg/StWZtrt2DE (lo tienen que escribir)
Argentina

Apr 2021
36 Temas
128 Mensajes
0
(05-16-2026, 02:17 PM)Tronlar escribió: Debes agradecer para ver el contenido...Con eso que propones si el servidor de la base de datos se satura, se cae, o la tabla u_miembros se corrompe por un fallo del sistema, la consulta va a fallar, va a decir, Error al ejecutar la consulta de la línea 20 de /var/www/html/vhosts/tuweb/includes/password.php., para un usuario normal ve un error y ve eso solo, un error, para uno que venga con la intención de atacar le estás dando la ruta interna de los archivos, sistema operativo, la estructura del servidor...
or exit( show_error('... línea '.__LINE__.' de '.__FILE__.'.', 'db') );
Sería así
$algorithm = defined('PASSWORD_ARGON2ID') ? PASSWORD_ARGON2ID : PASSWORD_BCRYPT;
$options = [];
if ($algorithm === PASSWORD_ARGON2ID) {
$options = [
'memory_cost' => 65536, // 64 MB
'time_cost' => 4,
'threads' => 2
];
}
$new_hash = password_hash($tsData['user_password'], $algorithm, $options);
$uid = (int)$data['user_id'];
$sql = "UPDATE u_miembros SET user_password = '{$new_hash}' WHERE user_id = {$uid}";
db_exec(array(__FILE__, __LINE__), 'query', $sql) or exit(show_error('Error en la base de datos.', 'db'));
Evitar ese "
problema", solo debes agregar un excepción debajo del
$new_hash y esto evita que continúe.
$new_hash = password_hash($tsData['user_password'], $algorithm, $options);
if ($new_hash === false) {
throw new RuntimeException('Error al generar hash de contraseña');
}
Accede al servidor de Discord y descarga ZCode | PHPost
Discord: discord.gg/StWZtrt2DE (lo tienen que escribir)