2010-06-08 7 views
2

Je ne suis pas en mesure de valider Passord avec() - = _ +, à savoir qu'il devrait accept ces caractères spéciaux, mais sa ne fonctionne pas quand j'utilise l'expression régulière commevalidation de mot de passe avec() - = _ +

`validates_format_of :password, :with => /^[A-Za-z0-9. ! @ # $ %^& * () _ - + = ]*\z/` 

sauf le * mais pas le accepting() - = _ + en rubis sur rails.

+3

Pourquoi validez-vous les mots de passe? – Kobi

+5

Il y a peu de choses pires que d'avoir un mot de passe complexe (et donc relativement sécurisé) rejeté pour être trop complexe (et donc trop sécurisé). – Quentin

Répondre

1

Le - au moins va causer des problèmes, pensez: [A-Z]. Le ^ peut causer des problèmes: est-ce que [A-Z^Q] signifie toutes les majuscules sauf Q dans votre saveur regex? (Si c'est le cas, tout ce qui suit ne semble pas exister ...)

Également: Les mots de passe de longueur nulle sont-ils valides?

10

Ces caractères doivent être échappés avec un \

Mais je recommande sérieusement que vous ne valider les mots de passe comme ça! Quel est le point dans limitant ce que les utilisateurs peuvent choisir pour leurs mots de passe? Vous réduisez artificiellement le groupe de personnages, ce qui facilite les attaques par force brute.

L'application d'un nom d'utilisateur ASCII a-z, 0-9 est une chose, mais vous ne devriez certainement pas restreindre les mots de passe à un si petit sous-ensemble de caractères.

+1

+1 pour revenir en arrière et voir l'image plus large. Pourquoi limitons-nous les mots de passe? – Thanatos

0

validates_format_of: mot de passe,: avec =>/^ [A-Za-z0-9. ! @ # $%^& *() _ - + =] * \ z/

Cela a fonctionné.

Questions connexes