J'essaie d'imposer des mots de passe forts (er) dans mon application Kohana en utilisant Auth, en utilisant l'expression rationnelle suivante pour exiger au moins une lettre majuscule, une minuscule, un chiffre, un non alphanum (caractère spécial), et un minimum de 8 caractères.Imposer des mots de passe forts dans Kohana Auth
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,}$
Le regex travaille, comme on peut le voir sur Rubular. Voici le code que j'utilise dans le Model_Auth_User
de Kohana, qui s'étend sur ORM
.
public function rules() {
return array(
'password' => array(
array('not_empty'),
array('min_length', array(':value', 8)),
array('regex', array(':value', '/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,}$/'))
)
);
}
Cependant, lors de la création d'un nouveau compte utilisateur, ou modifier le mot de passe d'un existant, ce regex semble être complètement ignoré. Le min_length
de la ligne ci-dessus fonctionne bien cependant!
Il m'empêchera d'utiliser test
comme mot de passe car il contient moins de 8 caractères, mais testing123
ne donne aucun type de message d'erreur.
Des idées pour lesquelles cela se passe et un moyen de contourner le problème?
Vous stockez le mot de passe comme hash? Si je me souviens bien, les règles ORM s'appliquent aux valeurs de la base de données, pas aux valeurs REQUEST. – bato3
@ bato3 Oui, le mot de passe est hashé. La validation du mot de passe est exécutée sur les valeurs POST avant le cryptage. – SigmaSteve
Je le sais. J'essaie d'expliquer pourquoi le code up ne fonctionne pas. 'save' sans validation supplémentaire, utilisez des valeurs internes, et ceci a été haché sur la méthode' set'. Vous devez donc utiliser des valeurs initiales initialisées de validation supplémentaire (POST). https://kohanaframework.org/3.3/guide-api/Model_Auth_User#filters, [#set] (https://kohanaframework.org/3.3/guide-api/Model_Auth_User#save), [#create] (https://kohanaframework.org/3.3/guide-api/Model_Auth_User#create) – bato3