написание регулярного выражения для проверки пароля - PullRequest
0 голосов
/ 19 марта 2019

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

например

• 8-20 символов с использованием букв и цифр

• Не может иметь 3 или более последовательных одинаковых букв, цифр или специальных символов

• Не может содержать пробел

Дополнительно:

• Один или несколько специальных символов, кроме «&’ ⁄ <> [\] {| } ~ ^!

• Чувствительный к регистру

Регулярное выражение PWASP ESAPI - ![CDATA[^(?:(?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))(?!.*(.)\1{2,})[A-Za-z0-9!~<>,;:_=?*+#."&§%°()\|\[\]\-\$\^\@\/]{8,32}$]]

Я пытался изменить его, но я не получал ожидаемых результатов, так как я не являюсь супер доверенным лицом с регулярным выражением, поскольку я никогда не использовал их раньше. Как я могу создать регулярное выражение, которое может включать все условия?

Спасибо

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Так что я придумаю решение, но оно по частям

так вот регулярное выражение для каждого условия

^ ((.) \ 1 {3}) - не может иметь 3 или более последовательных одинаковых букв, цифр или специальных символов

[a-zA-Z0-9 \ S] - регистр не может содержать пробелы, буквы и цифры

[^ \ «& '<> [/] {|} ~ ^!] - один или несколько специальных символов, кроме« & ’⁄ <> [\] {| } ~ ^!

{7,20} $ - диапазон

но если объединить их все вместе, они не будут работать, как ожидалось ...

есть предложения?

0 голосов
/ 19 марта 2019

Я бы посоветовал вам не использовать RegEx для этого, так как писать утомительно и еще труднее поддерживать.

Желательно, чтобы вы искали библиотеку, которая позволяет передавать конфигурацию(что-то вроде passay ).

Если вы не хотите, чтобы вы использовали обычные строковые функции для проверки длины (str.length(), наличия чисел и специальных символов (например, *)1008 *).

Мало того, что его будет проще обслуживать, но и быстрее, поскольку очень сложные запросы RegEx могут быстро работать довольно медленно.

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