Arenev tehnoloogiaCRM ja andmeplatvormidE-posti turundus ja e-posti turunduse automatiseerimine

Kontrollige parooli tugevust JavaScripti ja regulaaravaldiste abil (ka serveripoolsete näidetega!)

Uurisin, kuidas leida hea näide paroolitugevuse kontrollerist, mis seda kasutab JavaScript ja Regulaaravaldised (Regex). Minu töös olevas rakenduses teeme parooli tugevuse kontrollimiseks postituse tagasi ja see on meie kasutajatele üsna ebamugav.

Mis on Regex?

Tavaväljend on tähemärkide jada, mis määrab otsingumustri. Tavaliselt kasutavad selliseid mustreid stringide otsimise algoritmid leidma or leida ja asendada stringidega toimingud või sisendi valideerimine. 

See artikkel ei ole kindlasti teile regulaaravaldiste õpetamiseks. Lihtsalt teadke, et regulaaravaldiste kasutamise oskus lihtsustab teie arengut tekstis mustrite otsimisel. Samuti on oluline märkida, et enamikus arenduskeeltes on optimeeritud regulaaravaldiste kasutamine ... nii et stringide järkjärgulise sõelumise ja otsimise asemel on Regex tavaliselt palju kiirem nii serveri kui ka kliendi poolel.

Otsisin enne leidmist üsna palju veebist Näiteks mõnest suurepärasest regulaaravaldisest, mis otsivad pikkuse, tähemärkide ja sümbolite kombinatsiooni. Howver, kood oli minu maitse jaoks veidi liigne ja kohandatud .NET-i jaoks. Nii et lihtsustasin koodi ja panin selle JavaScripti. See muudab parooli tugevuse reaalajas kliendi brauseris enne selle tagasi postitamist kinnitama ... ja annab kasutajale parooli tugevuse kohta tagasisidet.

Sisestage A parool

Iga klaviatuuri käiguga testitakse parooli regulaaravaldise suhtes ja tagastatakse kasutajale tagasiside selle all.

Siin on koodeks

. Regulaaravaldised teha fantastilist tööd koodi pikkuse minimeerimiseks. See Javascripti funktsioon kontrollib parooli tugevust ja seda, kas selle kiletamist on lihtne, keskmine, raske või äärmiselt raske ära arvata. Kui inimene kirjutab, kuvab see näpunäiteid, kuidas julgustada teda tugevamaks muutuma. See kinnitab parooli järgmistel alustel:

  • Pikkus – Kui pikkus on alla või üle 8 tähemärgi.
  • Segatud juhtum – Kui paroolis on nii suur- kui ka väiketähti.
  • Numbers – Kui parool sisaldab numbreid.
  • Erimärgid – Kui parool sisaldab erimärke.

Funktsioon kuvab raskusi ja mõningaid näpunäiteid parooli edasiseks kõvendamiseks.

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

Paroolitaotluse karastamine

On hädavajalik, et te ei kinnitaks oma parooli koostamist ainult oma Javascriptis. See võimaldaks kõigil, kellel on brauseri arendustööriistad, skriptist mööda minna ja kasutada parooli, mida nad soovivad. Enne parooli oma platvormile salvestamist peaksite parooli tugevuse kinnitamiseks ALATI kasutama serveripoolset kontrolli.

PHP funktsioon parooli tugevuse jaoks

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

Pythoni funktsioon parooli tugevuse jaoks

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# funktsioon parooli tugevuse jaoks

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 funktsioon parooli tugevuse jaoks

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 on asutaja Martech Zone ja tunnustatud digitransformatsiooni ekspert. Douglas on aidanud käivitada mitmeid edukaid MarTechi idufirmasid, aidanud Martechi omandamisel ja investeeringutel üle 5 miljardi dollari ulatuses läbi viia ning jätkab oma platvormide ja teenuste käivitamist. Ta on ettevõtte kaasasutaja Highbridge, digitaalse muundamise konsultatsioonifirma. Douglas on ka Dummie juhendi ja ärijuhtimise raamatu autor.

seotud artiklid

33 Kommentaarid

  1. AITÄH! AITÄH! AITÄH! Olen 2 nädalat lollitanud teistelt veebisaitidelt pärit neetud parooli tugevuskoodiga ja juukseid välja kiskunud. Sinu oma on lühike, töötab täpselt nii, nagu ma tahan, ja mis kõige parem, seda on JavaScripti algaja jaoks lihtne muuta! Tahtsin jäädvustada tugevusotsuse ja mitte lasta vormil kasutaja parooli tegelikult värskendada, kui see ei vasta tugevustestile. Teiste inimeste kood oli liiga keeruline või ei töötanud õigesti või midagi muud. Ma armastan sind! XXXXX

  2. "P@s$w0rD" näitab tugevalt, kuigi see murtakse sõnaraamatu rünnakuga üsna kiiresti ära...
    Sellise funktsiooni juurutamiseks professionaalses lahenduses on minu arvates oluline kombineerida see algoritm sõnastiku kontrolliga.

  3. kas keegi oskab öelda, miks see minu omal ei töötanud..

    Kopeerisin kogu koodi ja kleepisin selle notepad++, kuid see ei tööta üldse?
    Palun aita mind..

  4. Seda tüüpi "jõukontroll" viib inimesed väga ohtlikule teele. See väärtustab märkide mitmekesisust parooli pikkuse asemel, mistõttu hindab lühemaid ja mitmekesisemaid paroole tugevamaks kui pikemaid ja vähem erinevaid paroole. See on eksitus, mis paneb teie kasutajad hätta, kui nad seisavad silmitsi tõsise häkkimisohuga.

  5. Olete elushoidja! Sõelusin stringe vasakule paremale ja keskele ning mõtlesin, et on parem viis ja leidsin teie koodilõigu Regexi abil. Suutsin seda oma saidi jaoks tinistada... Teil pole aimugi, kui palju see aitas. Suur tänu Douglas!!

Mis sa arvad?

Sellel saidil kasutatakse rämpsposti vähendamiseks Akismetit. Vaadake, kuidas teie andmeid töödeldakse.