Aperanta TeknologioCRM kaj Datumaj PlatformojRetpoŝta Merkatado kaj Retpoŝta Merkatada Aŭtomatigo

Kontrolu la Forton de Pasvorto kun JavaScript kaj Regulaj Esprimoj (Kun Ekzemploj de Servilo, Ankaŭ!)

Mi iom esploris pri trovado de bona ekzemplo de uzanto de Pasvorta Forto JavaScript kaj Regulaj Esprimoj (Regex). En la aplikaĵo ĉe mia laboro, ni redonas afiŝon por kontroli la pasvorton, kaj ĝi estas sufiĉe maloportuna por niaj uzantoj.

Kio estas Regex?

Regula esprimo estas vico de signoj, kiuj difinas serĉan ŝablonon. Kutime tiaj ŝablonoj estas uzataj per ĉenserĉaj algoritmoj trovi or trovi kaj anstataŭigi operacioj sur ĉenoj, aŭ por eniga validado. 

Ĉi tiu artikolo certe ne instruas al vi regulajn esprimojn. Nur sciu, ke la kapablo uzi Regulajn Esprimojn absolute simpligos vian evoluon dum vi serĉos ŝablonojn en teksto. Gravas ankaŭ rimarki, ke plej multaj evoluaj lingvoj optimumigis uzon de regula esprimo ... do anstataŭ analizi kaj serĉi ĉenojn paŝon post paŝo, Regex estas kutime multe pli rapida kaj servila kaj klienta.

Mi serĉis la retejon sufiĉe antaŭ ol mi trovis ekzemplo de iuj bonegaj Regulaj Esprimoj, kiuj serĉas kombinaĵon de longo, signoj kaj simboloj. Tamen la kodo estis iom troa laŭ mia gusto kaj adaptita por .NET. Do mi simpligis la kodon kaj metis ĝin en JavaScript. Ĉi tio igas ĝin validigi la pasvorton en realtempa en la retumilo de la kliento antaŭ afiŝi ĝin reen ... kaj donas iom da reago al la uzanto pri la forto de la pasvorto.

Tajpu A Pasvorton

Kun ĉiu bato de la klavaro, la pasvorto estas provita kontraŭ la regula esprimo kaj tiam reago estas donita al la uzanto en interspaco sub ĝi.

Jen la Kodo

la Regulaj Esprimoj faru mirindan laboron por minimumigi la longon de la kodo. Ĉi tiu Javascript-funkcio kontrolas la forton de pasvorto kaj ĉu malhelpi ĝin estas facila, meza, malfacila aŭ ege malfacile divenebla. Dum la persono tajpas, ĝi montras konsilojn por kuraĝigi ĝin esti pli forta. Ĝi validas la pasvorton surbaze de:

  • longo – Se la longo estas sub aŭ pli ol 8 signoj.
  • Miksita Kazo – Se la pasvorto havas kaj majusklajn kaj minusklojn.
  • Nombroj – Se la pasvorto inkluzivas numerojn.
  • Specialaj Karakteroj – Se la pasvorto inkluzivas specialajn signojn.

La funkcio montras la malfacilaĵon kaj kelkajn konsiletojn por plifortigi la pasvorton.

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

Malmoligi Vian Pasvortan Peton

Estas esence, ke vi ne nur validigu la pasvortan konstruon ene de via Ĝavaskripto. Ĉi tio ebligus al ĉiuj kun retumilaj iloj preteriri la skripton kaj uzi ĉian pasvorton, kiun ili ŝatus. Vi ĈIAM devas uzi servilan kontrolon por validigi la pasvortan forton antaŭ ol konservi ĝin en via platformo.

PHP-Funkcio Por Forto de Pasvorto

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 Funkcio Por Pasvortforto

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# Funkcio Por Forto de Pasvorto

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 Funkcio Por Forto de Pasvorto

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 estas la fondinto de la Martech Zone kaj agnoskita fakulo pri cifereca transformo. Douglas helpis komenci plurajn sukcesajn MarTech-noventreprenojn, helpis en la detala diligento de pli ol $ 5 miliardoj en Martech-akiroj kaj investoj, kaj daŭre lanĉas siajn proprajn platformojn kaj servojn. Li estas kunfondinto de Highbridge, cifereca transforma konsilanta firmao. Douglas ankaŭ estas publikigita verkinto de la gvidisto de Dummie kaj komerca gvidadlibro.

rilataj Artikoloj

33 Komentoj

  1. DANKON! DANKON! DANKON! Mi trompis dum 2 semajnoj kun malbenita pasvorta fortokodo de aliaj retejoj kaj eltiris miajn harojn. Via estas mallonga, funkcias same kiel mi volas kaj plej bone, facile modifebla por komencanto de Javaskripto! Mi volis kapti la fortoverdikton kaj ne lasi la formularon afiŝi efektive ĝisdatigi la pasvorton de la uzanto krom se ĝi renkontis la fortoteston. La kodo de aliaj homoj estis tro komplika aŭ ne funkciis ĝuste aŭ io alia. Mi amas vin! XXXXX

  2. "P@s$w0rD" montras forte, kvankam ĝi estus fendita sufiĉe rapide kun vortara atako...
    Por deploji tian funkcion sur profesia solvo, mi kredas, ke estas grave kombini ĉi tiun algoritmon kun vortara kontrolo.

  3. Ĉi tiu tipo de "forta kontrolilo" kondukas homojn laŭ tre danĝera vojo. Ĝi taksas signodiversecon super pasvorto-longo, igante ĝin taksi pli mallongajn, pli diversajn pasvortojn kiel pli fortajn ol pli longajn, malpli diversajn pasvortojn. Tio estas trompo, kiu havos problemojn viajn uzantojn se ili iam alfrontos gravan hakan minacon.

  4. Vi estas viva savanto! Mi analizis ŝnurojn maldekstren kaj centren kaj pensis, ke estas pli bona maniero kaj trovis vian kodon uzante Regex. Povis tinti kun ĝi por mia retejo...Vi ne havas ideon kiom ĉi tio helpis. Koran dankon Douglas!!

Kion vi pensas?

Ĉi tiu retejo uzas Akismeton por redukti spamon. Lernu, kiel via komento datiĝas.