CRM и платформы данныхЭлектронный маркетинг и автоматизация

Проверьте надежность пароля с помощью JavaScript или jQuery и регулярных выражений (также с примерами на стороне сервера!)

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

Что такое регулярное выражение?

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

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

Я немного искал в Интернете, прежде чем нашел пример некоторых отличных регулярных выражений, которые ищут комбинацию длины, символов и символов. Однако, на мой вкус, код был немного избыточен и заточен под .NET. Поэтому я упростил код и поместил его в JavaScript. Это заставляет его проверять надежность пароля в режиме реального времени в браузере клиента, прежде чем отправлять его обратно… и предоставляет пользователю обратную связь о надежности пароля.

Введите пароль

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

Функция надежности пароля JavaScript

Ассоциация Обычные выражения проделайте фантастическую работу по минимизации длины кода. Эта функция JavaScript проверяет надежность пароля и определяет, насколько его легко, средне, сложно или чрезвычайно сложно угадать. По мере того, как человек печатает, он отображает советы, которые помогут ему стать сильнее. Он проверяет пароль на основе:

  • Длина – Если длина меньше или больше 8 символов.
  • Смешанный случай – Если пароль состоит из символов верхнего и нижнего регистра.
  • Номера – Если пароль включает цифры.
  • Специальные символы – Если пароль содержит специальные символы.

Функция отображает сложность, а также некоторые советы по дальнейшему усилению пароля.

function checkPasswordStrength(password) {
  // Initialize variables
  var strength = 0;
  var tips = "";

  // Check password length
  if (password.length < 8) {
    tips += "Make the password longer. ";
  } else {
    strength += 1;
  }

  // Check for mixed case
  if (password.match(/[a-z]/) && password.match(/[A-Z]/)) {
    strength += 1;
  } else {
    tips += "Use both lowercase and uppercase letters. ";
  }

  // Check for numbers
  if (password.match(/\d/)) {
    strength += 1;
  } else {
    tips += "Include at least one number. ";
  }

  // Check for special characters
  if (password.match(/[^a-zA-Z\d]/)) {
    strength += 1;
  } else {
    tips += "Include at least one special character. ";
  }

  // Return results
  if (strength < 2) {
    return "Easy to guess. " + tips;
  } else if (strength === 2) {
    return "Medium difficulty. " + tips;
  } else if (strength === 3) {
    return "Difficult. " + tips;
  } else {
    return "Extremely difficult. " + tips;
  }
}

Если вы хотите обновить цвет подсказки, вы также можете сделать это, обновив код после // Return results линии.

// Get the paragraph element
  var strengthElement = document.getElementById("passwordStrength");

  // Return results
  if (strength < 2) {
    strengthElement.textContent = "Easy to guess. " + tips;
    strengthElement.style.color = "red";
  } else if (strength === 2) {
    strengthElement.textContent = "Medium difficulty. " + tips;
    strengthElement.style.color = "orange";
  } else if (strength === 3) {
    strengthElement.textContent = "Difficult. " + tips;
    strengthElement.style.color = "black";
  } else {
    strengthElement.textContent = "Extremely difficult. " + tips;
    strengthElement.style.color = "green";
  }

Функция надежности пароля jQuery

С jQuery нам фактически не нужно писать форму с обновлением oninput:

<form>
    <label for="password">Enter password:</label>
    <input type="password" id="password">
    <p id="password-strength"></p>
</form>

Мы также можем изменить цвет сообщений, если захотим. 

$(document).ready(function() {
    $('#password').on('input', function() {
        var password = $(this).val();
        var strength = 0;
        var tips = "";
  
        // Check password length
        if (password.length < 8) {
            tips += "Make the password longer. ";
        } else {
            strength += 1;
        }
  
        // Check for mixed case
        if (password.match(/[a-z]/) && password.match(/[A-Z]/)) {
            strength += 1;
        } else {
            tips += "Use both lowercase and uppercase letters. ";
        }
  
        // Check for numbers
        if (password.match(/\d/)) {
            strength += 1;
        } else {
            tips += "Include at least one number. ";
        }
  
        // Check for special characters
        if (password.match(/[^a-zA-Z\d]/)) {
            strength += 1;
        } else {
            tips += "Include at least one special character. ";
        }
  
        // Update the text and color based on the password strength
        var passwordStrengthElement = $('#password-strength');
        if (strength < 2) {
            passwordStrengthElement.text("Easy to guess. " + tips);
            passwordStrengthElement.css('color', 'red');
        } else if (strength === 2) {
            passwordStrengthElement.text("Medium difficulty. " + tips);
            passwordStrengthElement.css('color', 'orange');
        } else if (strength === 3) {
            passwordStrengthElement.text("Difficult. " + tips);
            passwordStrengthElement.css('color', 'black');
        } else {
            passwordStrengthElement.text("Extremely difficult. " + tips);
            passwordStrengthElement.css('color', 'green');
        }
    });
});

Повышение надежности запроса пароля

Очень важно, чтобы вы не просто проверяли конструкцию пароля в своем JavaScript. Это позволит любому, у кого есть инструменты разработки браузера, обойти сценарий и использовать любой пароль, который он пожелает. Вам ВСЕГДА следует использовать проверку на стороне сервера для проверки надежности пароля перед его сохранением на вашей платформе.

Функция PHP для надежности пароля

function checkPasswordStrength($password) {
  // Initialize variables
  $strength = 0;

  // Check password length
  if (strlen($password) < 8) {
    return "Easy to guess";
  } else {
    $strength += 1;
  }

  // Check for mixed case
  if (preg_match("/[a-z]/", $password) && preg_match("/[A-Z]/", $password)) {
    $strength += 1;
  }

  // Check for numbers
  if (preg_match("/\d/", $password)) {
    $strength += 1;
  }

  // Check for special characters
  if (preg_match("/[^a-zA-Z\d]/", $password)) {
    $strength += 1;
  }

  // Return strength level
  if ($strength < 2) {
    return "Easy to guess";
  } else if ($strength === 2) {
    return "Medium difficulty";
  } else if ($strength === 3) {
    return "Difficult";
  } else {
    return "Extremely difficult";
  }
}

Функция Python для надежности пароля

def check_password_strength(password):
  # Initialize variables
  strength = 0

  # Check password length
  if len(password) < 8:
    return "Easy to guess"
  else:
    strength += 1

  # Check for mixed case
  if any(char.islower() for char in password) and any(char.isupper() for char in password):
    strength += 1

  # Check for numbers
  if any(char.isdigit() for char in password):
    strength += 1

  # Check for special characters
  if any(not char.isalnum() for char in password):
    strength += 1

  # Return strength level
  if strength < 2:
    return "Easy to guess"
  elif strength == 2:
    return "Medium difficulty"
  elif strength == 3:
    return "Difficult"
  else:
    return "Extremely difficult"

Функция С# для надежности пароля

public string CheckPasswordStrength(string password) {
  // Initialize variables
  int strength = 0;

  // Check password length
  if (password.Length < 8) {
    return "Easy to guess";
  } else {
    strength += 1;
  }

  // Check for mixed case
  if (password.Any(char.IsLower) && password.Any(char.IsUpper)) {
    strength += 1;
  }

  // Check for numbers
  if (password.Any(char.IsDigit)) {
    strength += 1;
  }

  // Check for special characters
  if (password.Any(ch => !char.IsLetterOrDigit(ch))) {
    strength += 1;
  }

  // Return strength level
  if (strength < 2) {
    return "Easy to guess";
  } else if (strength == 2) {
    return "Medium difficulty";
  } else if (strength == 3) {
    return "Difficult";
  } else {
    return "Extremely difficult";
  }
}

Функция Java для надежности пароля

public String checkPasswordStrength(String password) {
  // Initialize variables
  int strength = 0;

  // Check password length
  if (password.length() < 8) {
    return "Easy to guess";
  } else {
    strength += 1;
  }

  // Check for mixed case
  if (password.matches(".*[a-z].*") && password.matches(".*[A-Z].*")) {
    strength += 1;
  }

  // Check for numbers
  if (password.matches(".*\\d.*")) {
    strength += 1;
  }

  // Check for special characters
  if (password.matches(".*[^a-zA-Z\\d].*")) {
    strength += 1;
  }

  // Return strength level
  if (strength < 2) {
    return "Easy to guess";
  } else if (strength == 2) {
    return "Medium difficulty";
  } else if (strength == 3) {
    return "Difficult";
  } else {
    return "Extremely difficult";
  }
}

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

Генератор паролей

Douglas Karr

Douglas Karr является директором по маркетингу OpenINSIGHTS и основатель компании Martech Zone. Дуглас помог десяткам успешных стартапов MarTech, помог в комплексной проверке приобретений и инвестиций Martech на сумму более 5 миллиардов долларов, а также продолжает помогать компаниям во внедрении и автоматизации их стратегий продаж и маркетинга. Дуглас — международно признанный эксперт по цифровой трансформации, а также эксперт в области MarTech и спикер. Дуглас также является автором опубликованного руководства для чайников и книги по бизнес-лидерству.

Статьи по теме

Вернуться к началу кнопки
Закрыть

Adblock обнаружен

Martech Zone может предоставить вам этот контент бесплатно, потому что мы монетизируем наш сайт за счет доходов от рекламы, партнерских ссылок и спонсорства. Мы были бы признательны, если бы вы удалили блокировщик рекламы при просмотре нашего сайта.