Files
yii2/docs/guide-es/security-passwords.md
Pavel Dovlatov bdb7c64910 Update to https protocol for php.net links (#17168) [skip ci]
* Updated php.net link for some MemCache properties [skip ci]

* Changed protocol to https for links to php.net in comments

* Changed protocol to https for links to php.net in code

* Changed www.php.net (http) to secure.php.net (https) in comments

* Changed www.php.net (http) to secure.php.net (https) in code

* Changed protocol to https for links to php.net in UPGRADE.md

* Changed protocol to https for links to pecl.php.net in comments

* Changed us.php.net to secure.php.net (https) in comments

* Changed protocol to https for links to php.net in docs

* Changed www.php.net (http) to secure.php.net (https) in docs

* Changed protocol to https for links to pecl.php.net in docs

* Changed ru/jp.php.net to secure.php.net (https) in docs

Don't sure about russian guide: is this links meant to be for guide on russian, or not?
2019-02-28 13:09:27 +03:00

1.6 KiB

Trabajar con Passwords

La mayoría de los desarrolladores saben que los passwords no deben ser guardados en texto plano, pero muchos desarrolladores aún creen que es seguro aplicar a los passowrds hash md5 o sha1. Hubo un tiempo cuando utilizar esos algoritmos de hash mencionados era suficiente, pero el hardware moderno hace posible que ese tipo de hash e incluso más fuertes, puedan revertirse rápidamente utilizando ataques de fuerza bruta.

Para poder proveer de una seguridad mayor para los passwords de los usuarios, incluso en el peor de los escenarios (tu aplicación sufre una brecha de seguridad), necesitas utilizar un algoritmo que resista los ataques de fuerza bruta. La mejor elección actualmente es bcrypt. En PHP, puedes generar un hash bcrypt utilizando la función crypt. Yii provee dos funciones auxiliares que hacen que crypt genere y verifique los hash más fácilmente.

Cuando un usuario provee un password por primera vez (por ej., en la registración), dicho password necesita ser pasado por un hash:

$hash = Yii::$app->getSecurity()->generatePasswordHash($password);

El hash puede estar asociado con el atributo del model correspondiente, de manera que pueda ser almacenado en la base de datos para uso posterior.

Cuando un usuario intenta ingresar al sistema, el password enviado debe ser verificado con el password con hash almacenado previamente:

if (Yii::$app->getSecurity()->validatePassword($password, $hash)) {
    // todo en orden, dejar ingresar al usuario
} else {
    // password erróneo
}