Kehittyvä teknologiaCRM ja tietoalustatSähköpostimarkkinointi ja sähköpostimarkkinoinnin automatisointi

Tarkista salasanan vahvuus JavaScriptillä ja säännöllisillä lausekkeilla (myös palvelinpuolen esimerkeillä!)

Tein tutkimusta löytääksesi hyvän esimerkin salasanan vahvuuden tarkistimesta, joka käyttää JavaScript ja Säännölliset lausekkeet (Regex). Työssämme olevassa sovelluksessa teemme postin takaisin salasanan vahvuuden tarkistamiseksi ja se on melko hankalaa käyttäjillemme.

Mikä on Regex?

Säännöllinen lauseke on merkkijono, joka määrittää hakumallin. Yleensä tällaisia ​​malleja käytetään merkkijonohakualgoritmeilla löytää or Etsi ja korvaa merkkijonotoiminnot tai syötteen vahvistus. 

Tämä artikkeli ei todellakaan ole opettaa sinulle säännöllisiä ilmauksia. Tiedä vain, että kyky käyttää säännöllisiä lausekkeita yksinkertaistaa kehitystäsi, kun etsit kuvioita tekstistä. On myös tärkeää huomata, että useimmat kehityskielet ovat optimoineet säännöllisen lausekkeen käytön… joten Regex on tyypillisesti paljon nopeampi sekä palvelin- että asiakaspuolella sen sijaan, että jäsennettäisiin ja etsitään merkkijonoja vaihe vaiheelta.

Etsin verkosta melko vähän ennen kuin löysin esimerkki joitain hienoja säännöllisiä lausekkeita, jotka etsivät pituuden, merkkien ja symbolien yhdistelmää. Howver, koodi oli hieman liiallinen makuuni ja räätälöity .NET: lle. Joten yksinkertaistin koodia ja laitoin sen JavaScriptiin. Tämä tekee siitä vahvan salasanan vahvuuden reaaliajassa asiakkaan selaimessa ennen sen lähettämistä takaisin ... ja antaa käyttäjälle palautetta salasanan vahvuudesta.

Kirjoita salasana

Jokaisella näppäimistön painalluksella salasana testataan säännöllisen lausekkeen suhteen, ja sitten palautetta annetaan käyttäjälle sen alapuolella.

Tässä on koodi

- Säännölliset lausekkeet tehdä fantastista työtä koodin pituuden minimoimiseksi. Tämä Javascript-toiminto tarkistaa salasanan vahvuuden ja sen, onko sen salaaminen helppoa, keskitasoa, vaikeaa vai erittäin vaikea arvata. Kun henkilö kirjoittaa, se näyttää vinkkejä sen rohkaisemiseksi olemaan vahvempi. Se vahvistaa salasanan seuraavien perusteella:

  • Pituus – Jos pituus on alle tai yli 8 merkkiä.
  • Mixed Case – Jos salasanassa on sekä isoja että pieniä kirjaimia.
  • Numerot – Jos salasana sisältää numeroita.
  • Erikoismerkit – Jos salasana sisältää erikoismerkkejä.

Toiminto näyttää vaikeuden sekä vinkkejä salasanan edelleen kovettamiseksi.

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

Paranna salasanapyyntöäsi

On tärkeää, että et vain vahvista salasanan rakennetta Javascriptissasi. Tämän avulla kuka tahansa, jolla on selaimen kehitystyökalut, voi ohittaa komentosarjan ja käyttää haluamaasi salasanaa. Sinun tulisi AINA käyttää palvelinpuolen tarkistusta vahvistaaksesi salasanan vahvuus ennen kuin tallennat sen alustallesi.

PHP-toiminto salasanan vahvuutta varten

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-funktio salasanan vahvuutta varten

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#-toiminto salasanan vahvuutta varten

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-toiminto salasanan vahvuutta varten

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 Martech Zone ja tunnustettu digitaalisen transformaation asiantuntija. Douglas on auttanut käynnistämään useita menestyneitä MarTech-startuppeja, auttanut yli 5 miljardin dollarin due diligence -tarkastuksessa Martechin hankinnoissa ja investoinneissa ja jatkaa omien alustojensa ja palveluidensa käynnistämistä. Hän on yksi perustajista Highbridge, digitaalisen muutoksen konsulttiyritys. Douglas on myös julkaissut Dummie's-oppaan ja yritysjohtajuuskirjan.

Aiheeseen liittyvät artikkelit

33 Kommentit

  1. KIITOS! KIITOS! KIITOS! Olen hölmöillut 2 viikkoa pirun salasanan vahvuuskoodilla muilta verkkosivustoilta ja vedän hiukseni ulos. Sinun on lyhyt, toimii aivan kuten minä haluan ja mikä parasta, javascript-noviisi on helppo muokata! Halusin kaapata voimaa koskevan päätöksen eikä antaa lomakkeen lähettää päivittää käyttäjän salasanaa, ellei se täytä vahvuustestiä. Toisten ihmisten koodi oli liian monimutkainen tai ei toiminut oikein tai jokin muu. Minä rakastan sinua! XXXXX

  2. Hei, ensinnäkin kiitos paljon ur-ponnisteluistani, yritin käyttää tätä Asp.net: n kanssa, mutta ei toiminut, käytän

    tagin sijasta, eikä se toiminut, ehdotuksia ?!

  3. “P @ s $ w0rD” näkyy voimakkaana, vaikka se murtuisi melko nopeasti sanakirjan hyökkäyksellä…
    Jotta tällainen ominaisuus voidaan ottaa käyttöön ammattimaisessa ratkaisussa, mielestäni on tärkeää yhdistää tämä algoritmi sanakirjan tarkistukseen.

  4. Tämäntyyppinen "vahvuuden tarkistaja" johtaa ihmiset erittäin vaaralliselle tielle. Se arvostaa merkkien monimuotoisuuden yli salasanan pituuden, mikä johtaa siihen, että lyhyemmät, monimuotoisemmat salasanat ovat vahvempia kuin pidemmät, vähemmän erilaiset salasanat. Se on harhaluulo, joka saa käyttäjät ongelmiin, jos heillä on koskaan vakava hakkerointi uhka.

    1. En ole eri mieltä, Jordan! Esimerkki esitettiin yksinkertaisesti esimerkkinä käsikirjoituksesta. Suosittelen ihmisille, että salasananhallintatyökalun avulla luodaan itsenäiset tunnuslauseet kaikille sivustoille, jotka ovat ainutlaatuisia. Kiitos!

  5. Olet elävä säästäjä! Parsasin merkkijonoja vasemmalle oikealle ja keskelle ja ajattelin, että on parempi tapa, ja löysin koodinpätkänne Regexillä. Pystyi hemmotella sitä sivustolleni ... Sinulla ei ole aavistustakaan kuinka paljon tämä auttoi. Kiitos paljon Douglas!

Mitä mieltä olet?

Tämä sivusto käyttää Akismetiä roskapostin vähentämiseksi. Lue, miten kommenttitietosi käsitellään.