2010-06-08 272 views
2

我无法验证passord与() - = _ +,即它应该accept这些特殊字符,但是当我用正则表达式作为有()验证密码 - = _ +

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

其唯一的除了*,但不是accepting() - = _ +在轨道上的红宝石。

+3

你为什么要验证密码? – Kobi 2010-06-08 06:32:34

+5

由于过于复杂(因而过于安全),拒绝复杂(因此相对安全)的密码更为糟糕。 – Quentin 2010-06-08 06:36:26

回答

1

至少-会导致问题,请考虑:[A-Z]^可能会导致问题:[A-Z^Q]是否意味着您的正则表达式风格中除Q以外的所有大写字母? (如果是这样,它后面的所有内容似乎都不存在...)

另请参见:零长度密码有效吗?

10

这些字符需要用\

逃脱,但我会认真建议您验证这样的密码! 限制用户可以选择什么密码?您可以人为地减少角色池供他们选择,从而使暴力攻击变得更容易。

将用户名强制为ASCII a-z,0-9是一回事,但您绝对不应该将密码限制为这样一小部分字符。

+1

+1退后看到更广阔的景象。为什么我们要限制密码? – Thanatos 2010-06-08 06:32:00

0

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

这工作。