
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";
}
}
Löysin toisen salasanan vahvuuden tarkistimet. Heidän algoritmi perustuu sanakirjaan. Kokeile sitä osoitteessa microsoft.com - http://www.microsoft.com/protect/yourself/password/checker.mspx ja yksi osoitteessa itsimpl.com - http://www.itsimpl.com
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
Ole hyvä! Ole hyvä! Ole hyvä!
Minäkin rakastan sinua!
Kiitos, että kirjoitit koodinpätkän, joka tekee juuri sen, mitä purkissa on sanottu!
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 ?!
Nisreeniin: korostetun ruudun koodi ei toimi cut'n'-liittämisen kanssa. Yksittäinen lainaus on sekaisin. Esittelylinkin koodi on kuitenkin hieno.
Hei, pidän käsikirjoituksestasi! Käännin sen hollanti, ja lähetin sen foorumilleni täällä!
hyvää työtä! miten se tulisi tehdä asiakkaalle
erittäin mukava työ.
Kiitos Douglas, käytän sitä nykyisessä työssäni.
“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.
Toimii erinomaisesti XULRunnerissa pienellä muutoksella. Kiitos!
Kiitos tästä pienestä koodista. Voin käyttää sitä nyt salasanani vahvuuden testaamiseen, kun kävijät lähettävät salasanansa,
Suuri koodaus
Käsikirjoitus oli super .Olin käyttänyt nykyisessä projektissamme
Kiitos jakamisesta!
Niin yksinkertainen ja upea ilme. Minä testaajana sain TC: tni tästä lausekkeesta.
Kiitos että jaoit. Sinulla on muutama rikkinäinen linkki tällä sivulla. FYI.
Voisiko joku kertoa, miksi se ei toiminut minun ..
kopioin kaiken koodin ja liitin sen notepad ++: iin, mutta se ei toimi ollenkaan?
auttaisitko minua..
Fantastinen!!!!! Kiitos.
Hienoa kaveria! Yksinkertainen ja tehokas. Kiitos paljon jakamisesta!
kiitämme
Hyvä, thx. Mutta… Mikä on esimerkki VAHVA PW? 'en löydä sitä! - {}
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.
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!
kiitos, se toimii hyvin.
Kiitos, että se toimii hyvin
Olen todella kiitollinen siitä, että sinua on etsinyt tätä monta kertaa, mutta viimeinkin sain viestisi ja olen todella järkyttynyt. KIITOS
Kiitos kaveri. Juuri otettu käyttöön verkkosivustollani ja se toimii erittäin hyvin.
Rakasta kuulla se! Olet tervetullut!
Kiitos, että jaoit! Olen pyrkinyt parantamaan salasanan vahvuutta verkkosivustollamme ja tämä toimi haluamallani tavalla. Kiitos paljon!
Kiitos, toivottavasti pystyt mukauttamaan sitä tarpeen mukaan.
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!
Hyvä kuulla!