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";
  }
}

Пајтон функција за јачина на лозинката

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";
  }
}

Јава функција за јачина на лозинката

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, консултантска фирма за дигитална трансформација. Даглас е исто така објавен автор на водич за Dummie и книга за бизнис лидерство.

поврзани написи

33 Коментари

  1. ВИ БЛАГОДАРАМ! ВИ БЛАГОДАРАМ! ВИ БЛАГОДАРАМ! Веќе 2 недели се залажувам со проклетниот код за јачина на лозинката од други веб-локации и си ја вадам косата. Твојот е краток, работи исто како што сакам и најдобро од сè, лесен за модифицирање на почетник во Javascript! Сакав да ја доловам пресудата за јачина и да не дозволам формуларот да објави всушност да ја ажурира лозинката на корисникот, освен ако не го исполни тестот за јачина. Кодот на другите луѓе беше премногу комплициран или не функционираше правилно или нешто друго. Те сакам! XXXXX

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

  3. Овој тип на „проверка на силата“ ги води луѓето по многу опасен пат. Ја вреднува различноста на знаците во однос на должината на лозинката, што доведува до оценување на пократките, поразновидни лозинки како посилни од подолгите, помалку разновидни лозинки. Тоа е заблуда што ќе ги доведе вашите корисници во неволја доколку некогаш се соочат со сериозна закана за хакирање.

    1. Не се согласувам, Џордан! Примерот едноставно беше ставен како пример на сценариото. Моја препорака за луѓето е да користат алатка за управување со лозинка за да креираат независни фрази за пристап за која било локација што е единствена за неа. Благодарам!

  4. Вие сте жив штедач! Ги анализирав низите лево десно и центар и мислев дека има подобар начин и го најдов вашето парче код користејќи Regex. Бев во можност да тинтрам со тоа за мојот сајт...Немате поим колку ова помогна. Фала многу Даглас!!

Што мислите?

Оваа страница користи Akismet за намалување на спам. Научете како се обработува вашиот коментар.

Затвори

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

Martech Zone може да ви ја обезбеди оваа содржина без трошоци бидејќи ја монетизираме нашата страница преку приходи од реклами, врски со партнери и спонзорства. Ќе ни биде благодарно ако го отстраните вашиот блокатор на реклами додека ја гледате нашата страница.