Разумный PasswordStrengthRegularExpression - PullRequest
11 голосов
/ 15 января 2009

Мы используем стандартный поставщик проверки подлинности ASP.NET (AspNetSqlMembershipProvider, как это происходит), и требование надежности пароля по умолчанию немного чрезмерно для наших нужд.

Мы требуем, чтобы наши пользователи вводили как минимум буквенно-цифровой пароль (т. Е. Буквы и хотя бы одно обязательное число, смешанные и не алфавитно-цифровые символы, если пользователь этого пожелает).

Кто-нибудь может подсказать, какой параметр PasswordStrengthRegularExpression позволит добиться этого?

Кроме того, как мы можем контролировать сообщение об ошибке, отображаемое пользователю, если пароль, который он пытается использовать, не проходит проверку регулярного выражения?

Примечание

Было обнаружено, что для свойства minRequiredNonalphanumericCharacters должно быть установлено значение 0, в противном случае этот параметр переопределяет любое регулярное выражение, которое используется

Ответы [ 2 ]

40 голосов
/ 18 мая 2010

Мы только что реализовали следующее выражение для проверки pwd из 8-16 символов и содержат три из следующих 4 элементов: заглавная буква, строчная буква, символ, число

(?=^[^\s]{8,16}$)((?=.*?\d)(?=.*?[A-Z])(?=.*?[a-z])|(?=.*?\d)(?=.*?[^\w\d\s])(?=.*?[a-z])|(?=.*?[^\w\d\s])(?=.*?[A-Z])(?=.*?[a-z])|(?=.*?\d)(?=.*?[A-Z])(?=.*?[^\w\d\s]))^.*

Объяснение отдельных компонентов:

  • (? = ^ [^ \ S] {8,16} $) - содержать от 8 до 16 непробельных символов
  • (? =. *? \ D) - содержит 1 цифру
  • (? =. *? [A-Z]) - содержит 1 заглавный символ
  • (? =. *? [A-z]) - содержит 1 строчный символ
  • (? =. *? [^ \ W \ d \ s]) - содержит 1 символ

заметьте после отрезка длины двойные скобки, а затем в выражении вы увидите несколько |. Это позволяет либо сравнивать 4 возможных комбинации, которые разрешены.

После написания этого я просто заметил, что этот вопрос был задан более года назад. Поскольку я наткнулся на этот вопрос в своих поисках, я надеюсь, что кто-то другой также сможет воспользоваться нашим решением.

16 голосов
/ 15 января 2009

Вот регулярное выражение, которое разрешает все символы и требует по крайней мере одно число и требует по крайней мере 6 символов.

^.*(?=.{6,})(?=.*\d).*$

Если вы хотите, чтобы определялось больше или меньше символов, просто измените (?=.{6,}), чтобы отразить минимальное количество символов, которое вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...