Platforme de date pentru cliențiMarketing prin e-mail și automatizare

Verificați puterea parolei cu JavaScript sau jQuery și expresii regulate (de asemenea, cu exemple pe partea de server!)

Făceam câteva cercetări despre găsirea unui bun exemplu de verificare a puterii parolei care se folosește JavaScript și Expresii obisnuite (regex). În aplicația de la serviciu, facem o postare înapoi pentru a verifica puterea parolei și este destul de incomod pentru utilizatorii noștri.

Ce este Regex?

O expresie regulată este o secvență de caractere care definesc un model de căutare. De obicei, astfel de modele sunt utilizate de algoritmi de căutare a șirurilor pentru găsi or găsiți și înlocuiți operații pe șiruri sau pentru validarea intrărilor. 

Acest articol nu este cu siguranță pentru a vă învăța expresii regulate. Știți doar că abilitatea de a utiliza expresii regulate vă va simplifica în mod absolut dezvoltarea pe măsură ce căutați modele în text. De asemenea, este important să rețineți că majoritatea limbajelor de dezvoltare au optimizat utilizarea expresiei regulate ... deci, mai degrabă decât analizarea și căutarea șirurilor pas cu pas, Regex este de obicei mult mai rapid atât pe partea serverului, cât și pe partea clientului.

Am căutat pe web destul de puțin înainte să găsesc un exemplu a unor expresii regulate grozave care caută o combinație de lungime, caractere și simboluri. Cu toate acestea, codul a fost puțin excesiv pentru gustul meu și adaptat pentru .NET. Așa că am simplificat codul și l-am pus în JavaScript. Acest lucru îl face să valideze puterea parolei în timp real pe browserul clientului înainte de a o posta înapoi... și oferă un feedback utilizatorului cu privire la puterea parolei.

Tastați o parolă

Cu fiecare lovitură a tastaturii, parola este testată în funcție de expresia regulată și apoi feedback-ul este furnizat utilizatorului într-un interval de sub ea.

Funcția de consolidare a parolei JavaScript

Expresii obisnuite faceți o treabă fantastică de a minimiza lungimea codului. Această funcție JavaScript verifică puterea unei parole și dacă anularea acesteia este ușoară, medie, dificilă sau extrem de dificil de ghicit. Pe măsură ce persoana scrie, afișează sfaturi pentru a o încuraja să fie mai puternică. Validează parola pe baza:

  • Lungime – Dacă lungimea este mai mică sau mai mare de 8 caractere.
  • Caz mixt – Dacă parola are atât caractere majuscule, cât și litere mici.
  • Numere – Dacă parola include numere.
  • Caractere speciale – Dacă parola include caractere speciale.

Funcția afișează dificultatea, precum și câteva sfaturi pentru întărirea în continuare a parolei.

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

Dacă doriți să actualizați culoarea vârfului, puteți face și asta prin actualizarea codului după // Return results linia.

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

Funcția de putere a parolei jQuery

Cu jQuery, de fapt nu trebuie să scriem formularul cu o actualizare la intrare:

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

De asemenea, putem modifica culoarea mesajelor dacă dorim. 

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

Întărirea cererii de parolă

Este esențial să nu validați doar construcția parolei în JavaScript. Acest lucru ar permite oricui cu instrumente de dezvoltare a browserului să ocolească scriptul și să folosească orice parolă pe care o dorește. Ar trebui să utilizați ÎNTOTDEAUNA o verificare la nivelul serverului pentru a valida puterea parolei înainte de a o stoca pe platforma dvs.

Funcție PHP pentru puterea parolei

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

Funcția Python pentru puterea parolei

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"

Funcția C# pentru puterea parolei

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

Funcția Java pentru puterea parolei

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

Și dacă sunteți doar în căutarea unui generator de parole grozav, am construit un mic instrument online drăguț pentru asta.

Generator de parole

Douglas Karr

Douglas Karr este un director de marketing specializat în companii SaaS și AI, unde ajută la scalarea operațiunilor de marketing, la stimularea generării cererii și la implementarea strategiilor bazate pe AI. Este fondatorul și editorul Martech Zone, o publicație de top în… Mai mult »
Înapoi la butonul de sus
Închide

Blocarea reclamelor a fost detectată

Ne bazăm pe reclame și sponsorizări pentru a menține Martech Zone gratuit. Vă rugăm să luați în considerare dezactivarea blocatorului de reclame sau să ne susțineți cu un abonament anual accesibil și fără reclame (10 USD):

Înscrie-te pentru un abonament anual