CRM- en dataplatformsE-posbemarking en e-posbemarkingsautomatisering

Kontroleer wagwoordsterkte met JavaScript en gereelde uitdrukkings (ook met voorbeelde aan die bedienerkant!)

Ek het navorsing gedoen oor die vind van 'n goeie voorbeeld van 'n wagwoordsterktekontroleerder wat gebruik word JavaScript en Gereelde uitdrukkings (Regex). In die aansoek by my werk doen ons 'n terugvoer om die sterkte van die wagwoord te verifieer en dit is nogal ongerieflik vir ons gebruikers.

Wat is Regex?

'N Gereelde uitdrukking is 'n reeks karakters wat 'n soekpatroon definieer. Gewoonlik word sulke patrone gebruik deur algoritmes vir snaar soek vind or vind en vervang bewerkings op toutjies, of vir invoer validering. 

Hierdie artikel moet u beslis nie gereelde uitdrukkings leer nie. Weet net dat die gebruik van Regular Expressions u ontwikkeling absoluut sal vergemaklik as u patrone in teks soek. Dit is ook belangrik om op te let dat die meeste ontwikkelingstale die gebruik van gereelde uitdrukkings geoptimaliseer het ... dus eerder as om snare stapsgewys te ontleed en te soek, is Regex gewoonlik baie vinniger op die bediener en op die kliënt.

Ek het nogal 'n bietjie op die web gesoek voordat ek dit gekry het n voorbeeld van 'n paar uitstekende Regular Expressions wat 'n kombinasie van lengte, karakters en simbole soek. Die kode was egter na my smaak 'n bietjie buitensporig en aangepas vir .NET. Daarom het ek die kode vereenvoudig en dit in JavaScript geplaas. Dit laat dit die wagwoordsterkte intyds in die blaaier van die kliënt bekragtig voordat dit teruggestuur word ... en gee terugvoer aan die gebruiker oor die sterkte van die wagwoord.

Tik 'n wagwoord

Met elke toetssleutel word die wagwoord aan die normale uitdrukking getoets en dan word die gebruiker terugvoer gegee in 'n omvang daaronder.

Hier is die kode

Die Gereelde uitdrukkings doen 'n fantastiese werk om die lengte van die kode te verminder. Hierdie Javascript-funksie kontroleer die sterkte van 'n wagwoord en of dit maklik, medium, moeilik of uiters moeilik is om te raai. Soos die persoon tik, vertoon dit wenke om hom aan te moedig om sterker te wees. Dit bekragtig die wagwoord gebaseer op:

  • Lengte – As die lengte minder as 8 karakters is.
  • Gemengde saak – As die wagwoord beide hoof- en kleinletters het.
  • Nommers – As die wagwoord nommers insluit.
  • Spesiale karakters – As die wagwoord spesiale karakters bevat.

Die funksie wys die moeilikheidsgraad sowel as 'n paar wenke om die wagwoord verder te verhard.

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

Verhard u wagwoordversoek

Dit is noodsaaklik dat u nie net die wagwoordkonstruksie in u Javascript bekragtig nie. Dit sal almal met blaaierontwikkelingsinstrumente in staat stel om die script te omseil en die wagwoord te gebruik wat hulle wil hê. U moet ALTYD 'n tjek aan die bedienerkant gebruik om die sterkte van die wagwoord te bekragtig voordat u dit op u platform bêre.

PHP-funksie vir wagwoordsterkte

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-funksie vir wagwoordsterkte

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#-funksie vir wagwoordsterkte

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-funksie vir wagwoordsterkte

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 is die stigter van die Martech Zone en 'n erkende kenner van digitale transformasie. Douglas het gehelp om verskeie suksesvolle MarTech-opstartondernemings te begin, het gehelp met die omsigtigheidsondersoek van meer as $5 miljard in Martech-verkrygings en -beleggings, en gaan voort om sy eie platforms en dienste bekend te stel. Hy is 'n medestigter van Highbridge, 'n konsultasiefirma vir digitale transformasie. Douglas is ook 'n gepubliseerde skrywer van 'n Dummie-gids en 'n besigheidsleierskapboek.

verwante Artikels

33 Comments

  1. DANKIE! DANKIE! DANKIE! Ek flous al vir 2 weke met verdomde wagwoordsterktekode van ander webwerwe en trek my hare uit. Die uwe is kort, werk net soos ek wil en die beste van alles, maklik vir 'n javascript-beginner om te verander! Ek wou die kraguitspraak vaslê en nie toelaat dat die vorm pos om die gebruiker se wagwoord werklik op te dateer nie, tensy dit aan die sterktetoets voldoen. Ander mense se kode was te ingewikkeld of het nie reg gewerk nie of iets anders. Ek het jou lief! XXXXX

  2. Hallo, eerstens baie dankie vir jou pogings, ek het probeer om dit met Asp.net te gebruik, maar het nie gewerk nie, ek gebruik

    in plaas van tag, en dit het nie gewerk nie, enige voorstelle?!

  3. Aan Nisreen: die kode in die gemerkte blokkie werk nie met 'n cut'n'paste nie. Die enkele aanhaling is deurmekaar. Die demonstrasieskakel se kode is egter goed.

  4. "P@s$w0rD" wys sterk, alhoewel dit redelik vinnig gekraak sou word met 'n woordeboekaanval ...
    Om so 'n kenmerk op 'n professionele oplossing te ontplooi, glo ek dit is belangrik om hierdie algoritme te kombineer met 'n woordeboekkontrole.

  5. kan iemand sê hoekom dit nie myne gewerk het nie..

    ek het al die kode gekopieer en dit op notepad++ geplak, maar dit werk glad nie ?
    help my asseblief..

  6. Hierdie tipe "sterktetoetser" lei mense op 'n baie gevaarlike pad. Dit waardeer karakterdiversiteit oor wagfraselengte, wat daartoe lei dat dit korter, meer diverse wagwoorde as sterker as langer, minder diverse wagwoorde beoordeel. Dit is 'n dwaling wat u gebruikers in die moeilikheid sal bring as hulle ooit 'n ernstige inbraakbedreiging in die gesig staar.

    1. Ek stem nie saam nie, Jordan! Die voorbeeld is bloot as 'n voorbeeld van die draaiboek geplaas. My aanbeveling vir mense is om 'n wagwoordbestuursinstrument te gebruik om onafhanklike wagwoordfrases te skep vir enige webwerf wat uniek daaraan is. Dankie!

  7. Jy is 'n lewendige redder! Ek was besig om stringe links regs en middel te ontleed en het gedink daar is 'n beter manier en het jou stukkie kode gevind met behulp van Regex. Was in staat om daarmee te rinkel vir my webwerf ... Jy het geen idee hoeveel dit gehelp het nie. Baie dankie Douglas!!

Wat dink jy?

Hierdie webwerf gebruik Akismet om spam te verminder. Leer hoe jou opmerking verwerk is.