CRM ir duomenų platformosEl. Pašto rinkodara ir el. Pašto rinkodaros automatizavimas

Patikrinkite slaptažodžio stiprumą naudodami „JavaScript“ arba „jQuery“ ir reguliarius reiškinius (taip pat ir su serverio pavyzdžiais!)

Atlikau keletą tyrimų, norėdamas rasti gerą naudojamo slaptažodžio stiprumo tikrintuvo pavyzdį JavaScript ir Reguliarūs posakiai (Reguliariai). Mano darbe esančioje programoje pateikiame atgalinį pranešimą, kad patikrintume slaptažodžio stiprumą, ir tai gana nepatogu mūsų vartotojams.

Kas yra „Regex“?

Reguliari išraiška yra simbolių seka, apibrėžianti paieškos modelį. Paprastai tokius modelius naudoja eilučių paieškos algoritmai rasti or rasti ir pakeisti operacijos stygomis arba įvesties patvirtinimas. 

Šis straipsnis tikrai nėra skirtas išmokyti jus reguliariai reikšti. Tiesiog žinokite, kad galimybė naudoti įprastas išraiškas visiškai supaprastins jūsų kūrimą, kai ieškosite raštų tekste. Taip pat svarbu pažymėti, kad daugumoje kūrimo kalbų buvo optimizuotas reguliarių išraiškų naudojimas ... taigi, užuot analizavęs ir ieškodamas eilutes nuosekliai, „Regex“ paprastai yra daug greitesnis tiek serveryje, tiek kliente.

Nemažai ieškojau internete, kol radau pavyzdys kai kurių puikių reguliariųjų reiškinių, kurie ieško ilgio, simbolių ir simbolių derinio. Tačiau kodas buvo šiek tiek per didelis mano skoniui ir pritaikytas .NET. Taigi supaprastinau kodą ir įdėjau jį į „JavaScript“. Dėl to jis tikrina slaptažodžio stiprumą realiuoju laiku kliento naršyklėje, prieš jį paskelbdamas atgal… ir vartotojui pateikia atsiliepimų apie slaptažodžio stiprumą.

Įveskite slaptažodį

Kiekvienu klaviatūros paspaudimu slaptažodis tikrinamas pagal įprastą išraišką, o po to vartotojui pateikiamas grįžtamasis ryšys.

„JavaScript“ slaptažodžio stiprumo funkcija

Šis Reguliarūs posakiai atlikti fantastišką kodo ilgį. Ši „Javascript“ funkcija tikrina slaptažodžio stiprumą ir ar jį atspėti lengva, vidutinė, sudėtinga ar itin sunku. Kai asmuo rašo, rodomi patarimai, kaip paskatinti jį būti stipresniu. Jis patvirtina slaptažodį pagal:

  • Ilgis – Jei ilgis yra mažesnis arba didesnis nei 8 simboliai.
  • Mišrus atvejis – Jei slaptažodis turi ir didžiąsias, ir mažąsias raides.
  • Skaičiai – Jei slaptažodis apima skaičius.
  • Specialūs simboliai – Jei slaptažodis apima specialiuosius simbolius.

Funkcija rodo sunkumus ir keletą patarimų, kaip dar labiau sustiprinti slaptažodį.

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

Jei norite atnaujinti antgalio spalvą, tai galite padaryti ir atnaujindami kodą po // Return results linija.

// 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“ slaptažodžio stiprumo funkcija

Naudodami jQuery, mes iš tikrųjų neturime rašyti formos su įvesties atnaujinimu:

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

Jei norime, taip pat galime pakeisti pranešimų spalvą. 

$(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');
        }
    });
});

Jūsų slaptažodžio užklausos grūdinimas

Labai svarbu ne tik patvirtinti slaptažodžio kūrimą „Javascript“. Tai leistų visiems, turintiems naršyklės kūrimo įrankius, apeiti scenarijų ir naudoti norimą slaptažodį. Prieš saugodami slaptažodį savo platformoje, VISADA turėtumėte naudoti serverio patikrą, kad patvirtintumėte slaptažodžio stiprumą.

PHP funkcija slaptažodžio stiprumui

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 funkcija slaptažodžio stiprumui

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# funkcija, skirta slaptažodžio stiprumui

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 funkcija slaptažodžio stiprumui

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

Ir jei jūs tiesiog ieškote puikaus slaptažodžių generatoriaus, aš tam sukūriau puikų internetinį įrankį.

Slaptažodžio generatorius

Douglas Karr

Douglas Karr yra Martech Zone ir pripažintas skaitmeninės transformacijos ekspertas. Douglas padėjo pradėti keletą sėkmingų „MarTech“ startuolių, padėjo atlikti daugiau nei 5 mlrd. USD Martech įsigijimų ir investicijų išsamų patikrinimą ir toliau kuria savo platformas ir paslaugas. Jis yra vienas iš įkūrėjų Highbridge, skaitmeninės transformacijos konsultacinė įmonė. Douglasas taip pat yra paskelbtas Dummie vadovo ir verslo lyderystės knygos autorius.

Susiję straipsniai

33 komentarai

  1. AČIŪ! AČIŪ! AČIŪ! 2 savaites kvailiojau su velniškai slaptažodžio stiprumo kodu iš kitų svetainių ir traukiausi plaukus. Jūsų yra trumpas, veikia taip, kaip aš noriu, o geriausia, kad javascript naujokas gali lengvai modifikuoti! Norėjau užfiksuoti stiprumo verdiktą ir neleisti, kad forma paskelbtų iš tikrųjų atnaujinti vartotojo slaptažodį, nebent jis atitiktų stiprumo testą. Kitų žmonių kodas buvo per sudėtingas arba neveikė tinkamai, ar dar kažkas. Aš tave myliu! XXXXX

  2. „P@s$w0rD“ rodomas stipriai, nors jis būtų gana greitai nulaužtas naudojant žodyno ataką...
    Manau, kad norint įdiegti tokią funkciją profesionaliame sprendime, svarbu šį algoritmą derinti su žodyno patikra.

  3. Šio tipo „jėgos tikrintuvas“ veda žmones labai pavojingu keliu. Ji vertina simbolių įvairovę, o ne slaptafrazės ilgį, todėl trumpesni ir įvairesni slaptažodžiai vertinami kaip stipresni nei ilgesni, ne tokie skirtingi slaptažodžiai. Tai klaidinga klaida, dėl kurios jūsų naudotojai susidurs su rimta įsilaužimo grėsme.

    1. Aš nesutinku, Džordana! Pavyzdys buvo tiesiog pateiktas kaip scenarijaus pavyzdys. Mano rekomendacija žmonėms yra naudoti slaptažodžių valdymo įrankį, kad sukurtumėte nepriklausomas slaptafrazes bet kuriai svetainei, kuri yra unikali. Dėkoju!

  4. Jūs esate gyvų žmonių gelbėtojas! Aš analizavau eilutes kairėje dešinėje ir centre ir maniau, kad yra geresnis būdas, ir radau jūsų kodo dalį naudodamas Regex. Galėjau su juo susitvarkyti savo svetainę... Jūs neįsivaizduojate, kiek tai padėjo. Labai ačiū Douglas!!

Ką manote?

Ši svetainė naudoja "Akismet", kad sumažintų šlamštą. Sužinokite, kaip apdorojamas jūsų komentaras.