Как улучшить проверку пароля из OpenCart? - PullRequest
0 голосов
/ 25 апреля 2020

Ниже приведен код по умолчанию из Opencart 2.3.0.2 на github. Его можно найти примерно в 5 php файлах. В настоящее время требования к паролю составляют не менее 4 и не более 20 символов. Я хочу сделать это 8 минут, один верхний регистр, один нижний регистр и специальный символ. Это должен быть похожий формат, чтобы я мог вставить код.

https://github.com/opencart/opencart/blob/2.2.0.0/upload/catalog/controller/account/password.php

        if ((utf8_strlen($this->request->post['password']) < 4) || (utf8_strlen($this->request->post['password']) > 20)) {
            $this->error['password'] = $this->language->get('error_password');

Может ли это сработать или есть лучший?


        if (!preg_match('^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&amp;+=])(?=\S+$).{8,}$', $this->request->post['password'])) {
            $this->error['password'] = $this->language->get('error_password');

1 Ответ

0 голосов
/ 25 апреля 2020

Вы можете попробовать это ...

if (!preg_match('/(?=^.{8,40}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/', html_entity_decode($this->request->post['password'], ENT_QUOTES, 'UTF-8'))) {

Это в течение 8 мин. и 40 макс. символы, одна заглавная и одна строчная буква. Если вы хотите sh проверить специальный символ, вы должны добавить дополнительное регулярное выражение.

...