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"

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

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

Бутон "Нагоре" горе
Близо

Открит е рекламен блок

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