Проверка пароля (регулярное выражение?) - PullRequest
3 голосов
/ 07 ноября 2010

Мне нужно написать несколько правил проверки пароля пользователя со следующими требованиями. C # ASP.NET MVC.

Пароли должны быть от 6 до 8 символов.
Должен содержать хотя бы одного персонажа каждый из по крайней мере трех из следующие категории:

  1. Прописные буквы
  2. строчные буквы
  3. Цифровые цифры
  4. Не буквенно-цифровые символы (например,! @ # $% ...)

Не должно содержать последовательность из 3 или более символов в общее с именем пользователя
не должно повторите любой из предыдущих 1 паролей
Должен быть изменен, если пароль считается скомпрометированным в любом случае

В настоящее время я написал кучу действительно грязных правил проверки, использующих операторы if и циклы (особенно 3 символа в последовательности с частью имени пользователя), которые в настоящее время работают, но кажутся неправильными. Есть ли лучший подход, который я могу выбрать?

Thankyou

1 Ответ

3 голосов
/ 07 ноября 2010

Я написал один очень похожий на то, что вы описываете.Они могут быть выполнены как регулярное выражение, и когда оно будет выполнено (по крайней мере, для меня), это было очень полезным достижением.

Чтобы выполнить это, вам нужно использовать функцию регулярных выражений, называемую lookaheads.См. информацию на сайте регулярное выражение.info для всех подробностей.

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

Редактировать: Чтобы уточнить мой комментарий выше.Не каждое из ваших требований может или должно быть решено с помощью регулярных выражений.А именно, требования, которые вы перечислили как:

  • Не должны содержать какую-либо последовательность из 3 или более символов, общих с именем пользователя
  • Не должны повторять ни один из предыдущих 1 паролей
  • Должен быть изменен, если считается, что пароль каким-либо образом взломан

Вероятно, должен обрабатываться отдельно от регулярного выражения проверки основного пароля, так как они очень контекстуальны.« последовательность из 3 или более общих символов с именем пользователя », вероятно, может быть обработана на стороне клиента.Однако два других элемента, вероятно, лучше всего обрабатывать на стороне сервера.

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