Rozvíjajúca sa technológiaCRM a dátové platformyE-mailový marketing a automatizácia e-mailového marketingu

Skontrolujte silu hesla pomocou JavaScriptu a regulárnych výrazov (aj s príkladmi na strane servera!)

Robil som prieskum zameraný na nájdenie dobrého príkladu kontroly sily hesla, ktorá používa JavaScript a Pravidelné výrazy (Regex). V aplikácii v mojej práci urobíme príspevok späť, aby sme overili silu hesla a je to pre našich používateľov dosť nepohodlné.

Čo je Regex?

Regulárny výraz je postupnosť znakov, ktoré definujú vzor vyhľadávania. Takéto vzory sa zvyčajne používajú v algoritmoch vyhľadávania reťazcov nájsť or nájsť a nahradiť operácie s reťazcami alebo na overenie vstupu. 

Tento článok vás rozhodne nemá učiť regulárne výrazy. Vedzte, že schopnosť používať regulárne výrazy úplne zjednoduší váš vývoj pri hľadaní vzorov v texte. Je tiež dôležité poznamenať, že väčšina vývojových jazykov optimalizovala použitie regulárneho výrazu ... takže namiesto postupnej analýzy a vyhľadávania reťazcov je Regex zvyčajne oveľa rýchlejší na strane servera aj klienta.

Než som našiel, dosť som prehľadal web príklad niekoľkých skvelých regulárnych výrazov, ktoré hľadajú kombináciu dĺžky, znakov a symbolov. Avšak, kód bol na môj vkus trochu prehnaný a prispôsobený pre .NET. Takže som zjednodušil kód a vložil ho do JavaScriptu. Toto umožňuje overiť silu hesla v reálnom čase v prehliadači klienta pred jeho opätovným zverejnením ... a poskytuje používateľovi spätnú väzbu o sile hesla.

Zadajte heslo

Pri každom stlačení klávesnice sa heslo testuje proti regulárnemu výrazu a potom sa používateľovi poskytuje spätná väzba v rozsahu pod ním.

Tu je kódex

و Pravidelné výrazy urobte fantastickú prácu pri minimalizácii dĺžky kódu. Táto funkcia Javascript kontroluje silu hesla a či je jeho prekazenie ľahké, stredné, ťažké alebo extrémne ťažké uhádnuť. Keď osoba píše, zobrazuje tipy, ako ju povzbudiť, aby bola silnejšia. Overuje heslo na základe:

  • Dĺžka – Ak je dĺžka menšia alebo väčšia ako 8 znakov.
  • Zmiešaný prípad – Ak heslo obsahuje veľké aj malé písmená.
  • Čísla – Ak heslo obsahuje čísla.
  • Špeciálne znaky – Ak heslo obsahuje špeciálne znaky.

Funkcia zobrazuje náročnosť, ako aj niekoľko tipov na ďalšie posilnenie hesla.

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

Vystuženie vašej požiadavky na heslo

Je nevyhnutné, aby ste nielen potvrdili vytvorenie hesla vo svojom Javascripti. Toto by umožnilo každému, kto má vývojové nástroje prehliadača, obísť skript a použiť akékoľvek heslo, ktoré by chcel. Pred uložením na svoju platformu by ste mali vždy použiť kontrolu na strane servera na overenie sily hesla.

PHP funkcia pre silu hesla

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

Funkcia Python pre silu hesla

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"

Funkcia C# pre silu hesla

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 funkcia pre silu hesla

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 je zakladateľom spoločnosti Martech Zone a uznávaný odborník na digitálnu transformáciu. Douglas pomohol rozbehnúť niekoľko úspešných MarTech startupov, asistoval pri due diligence viac ako 5 miliárd dolárov v akvizíciách a investíciách Martech a pokračuje v spúšťaní svojich vlastných platforiem a služieb. Je spoluzakladateľom Highbridge, poradenská firma v oblasti digitálnej transformácie. Douglas je tiež publikovaným autorom príručky Dummie a knihy obchodného vedenia.

súvisiace články

33 Komentáre

  1. ĎAKUJEM! ĎAKUJEM! ĎAKUJEM! Už 2 týždne šaškujem s prekliatym kódom sily hesla z iných webov a ťahám si vlasy. Ten váš je krátky, funguje presne tak, ako chcem, a čo je najlepšie, pre začiatočníka v javascripte ho ľahko upraví! Chcel som zachytiť verdikt sily a nedovoliť, aby formulár skutočne aktualizoval heslo používateľa, pokiaľ nespĺňa test pevnosti. Kód iných ľudí bol príliš komplikovaný alebo nefungoval správne alebo niečo iné. Ľúbim ťa! XXXXX

  2. Ahoj, v prvom rade ďakujem mnohokrát za vaše úsilie, snažil som sa to použiť s Asp.net, ale nefungoval som, používam to

    namiesto značky a nefungovalo to, nejaké návrhy?!

  3. „P @ s $ w0rD“ sa ukazuje ako silný, aj keď by bol pomerne rýchlo prelomený slovníkovým útokom ...
    Aby som nasadil takúto funkciu na profesionálne riešenie, som presvedčený, že je dôležité spojiť tento algoritmus s kontrolou slovníka.

  4. Vďaka za tento malý kód, ktorý teraz môžem použiť na otestovanie sily môjho hesla, keď moji návštevníci zadajú svoje heslá,

  5. môže niekto povedať, prečo to nefungovalo moje ..

    skopíroval som celý kód a vložil som ho do poznámkového bloku ++, ale nefunguje to vôbec?
    prosím pomôžte mi..

  6. Tento typ „kontroly sily“ vedie ľudí po veľmi nebezpečnej ceste. Hodnotí rozmanitosť znakov nad dĺžkou prístupovej frázy, čo vedie k hodnoteniu kratších a rozmanitejších hesiel ako silnejších ako dlhších a menej rozmanitých hesiel. Toto je klam, ktorý vašich používateľov dostane do problémov, ak niekedy čelia vážnej hackerskej hrozbe.

    1. Nesúhlasím, Jordan! Tento príklad bol jednoducho uvedený ako príklad scenára. Moje odporúčanie pre ľudí je využiť nástroj na správu hesiel na vytvorenie nezávislých prístupových fráz pre akékoľvek stránky, ktoré sú pre ne jedinečné. Vďaka!

  7. Ste živým šetričom! Analyzoval som reťazce vľavo vpravo a na stred a myslel som si, že existuje lepší spôsob. Našiel som váš kúsok kódu pomocou nástroja Regex. Dokázal s tým zafungovať na mojej stránke ... Netušíte, ako veľmi to pomohlo. Ďakujem moc Douglas !!

Čo si myslíte?

Táto stránka používa Akismet na zníženie spamu. Zistite, ako sa spracúvajú údaje vašich komentárov.