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

Проверете силата на паролата с JavaScript и регулярни изрази (също и с примери от страна на сървъра!)

Правих някои изследвания за намиране на добър пример за проверка на паролата за сила, която използва JavaScript и Редовни изрази (Regex). В приложението в моята работа правим обратно съобщение, за да проверим силата на паролата и е доста неудобно за нашите потребители.

Какво е Regex?

Регулярният израз е последователност от символи, които определят модела на търсене. Обикновено такива модели се използват от алгоритми за търсене на низове за намерите or намерете и заменете операции върху низове или за проверка на входа. 

Тази статия определено не е за да ви научи на регулярни изрази. Просто знайте, че възможността за използване на регулярни изрази ще опрости абсолютно вашето развитие, докато търсите шаблони в текста. Също така е важно да се отбележи, че повечето езици за разработка са оптимизирали използването на регулярни изрази ... така че вместо да анализира и търси низове стъпка по стъпка, Regex обикновено е много по-бърз както от страна на сървъра, така и от страна на клиента.

Потърсих в мрежата доста преди да открия пример на някои страхотни регулярни изрази, които търсят комбинация от дължина, символи и символи. Колкото и да е, кодът беше малко прекален за моя вкус и пригоден за .NET. Затова опростих кода и го сложих в 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;
  }
}

Втвърдяване на вашата заявка за парола

От съществено значение е да не потвърждавате само конструкцията на паролата във вашия 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"

C# функция за сила на паролата

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 е основателят на Martech Zone и признат експерт по цифрова трансформация. Дъглас е помогнал за стартирането на няколко успешни стартиращи фирми MarTech, съдействал е за надлежна проверка на над $5 милиарда в придобивания и инвестиции на Martech и продължава да стартира свои собствени платформи и услуги. Той е съосновател на Highbridge, консултантска фирма за дигитална трансформация. Дъглас също е публикуван автор на ръководство за манекени и книга за бизнес лидерство.

Свързани статии

33 Коментари

  1. БЛАГОДАРЯ ТИ! БЛАГОДАРЯ ТИ! БЛАГОДАРЯ ТИ! Заблуждавам се от 2 седмици с проклет код за сила на паролата от други уебсайтове и си скубя косата. Вашият е кратък, работи точно както аз искам и най-доброто, лесно за начинаещи в javascript за промяна! Исках да уловя присъдата за сила и да не позволя на формуляра да актуализира действително паролата на потребителя, освен ако не отговаря на теста за сила. Кодът на други хора беше твърде сложен или не работеше правилно или нещо друго. Обичам те! XXXXX

  2. „P @ s $ w0rD“ се показва силно, макар че ще бъде пробит доста бързо с реч атака
    За да разгърна такава функция на професионално решение, вярвам, че е важно да комбинирате този алгоритъм с проверка на речника.

  3. може ли някой да каже, защо не работи моето ..

    копирах целия код и го поставих в notepad ++, но изобщо не работи?
    Моля, помогни ми..

  4. Този тип „проверка на силата“ води хората по много опасен път. Той оценява разнообразието от знаци по дължината на паролата, което го кара да оценява по-кратките и по-разнообразни пароли като по-силни от по-дългите и по-малко разнообразни пароли. Това е заблуда, която ще затрудни потребителите ви, ако някога се изправят пред сериозна заплаха от хакерство.

    1. Не съм несъгласен, Йордания! Примерът просто беше представен като пример за сценария. Моята препоръка за хората е да използват инструмент за управление на пароли, за да създават независими пароли за всеки сайт, който е уникален за него. Благодаря!

  5. Наистина оценявам, че сте претърсван много пъти, но накрая получих вашия пост и наистина съм изумен. БЛАГОДАРЯ ТИ

  6. Вие сте спестител на живо! Аз анализирах низове вляво и вдясно и помислих, че има по-добър начин и намерих вашата част от кода с помощта на Regex. Успях да се объркам с него за моя сайт ... Нямате представа колко много помогна това. Благодаря много Дъглас !!

Какво мислите?

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните за коментарите ви.