
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";
}
}
Ek het 'n ander wagwoordsterktekontroleerder gevind. Hul algoritme gebaseer op woorde woordeboek. Probeer een by microsoft.com – http://www.microsoft.com/protect/yourself/password/checker.mspx en een by itsimpl.com – http://www.itsimpl.com
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
Jy is welkom! Jy is welkom! Jy is welkom!
Ek is lief vir jou ook!
Dankie dat u 'n stuk kode geskryf het wat presies doen wat dit op die blik staan!
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?!
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.
Haai, ek hou van jou skrif! Ek het dit in Nederlands vertaal en dit op my forum hier geplaas!
goeie werk! presies hoe dit op die kliënt gedoen moet word
baie mooi werk….
Dankie Douglas, ek gebruik dit vir my huidige werk.
"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.
Werk wonderlik in XULRunner met 'n bietjie verandering rondom. Dankie!
Dankie vir hierdie klein kode, ek kan dit nou gebruik om my wagwoordsterkte te toets wanneer my besoekers hul wagwoorde invoer,
Groot stuk kodering
Die teks was super. Ek het dit in ons huidige projek gebruik
Dankie vir die deel!
So eenvoudige en fantastiese uitdrukking. Ek as toetser het my TC's afgelei van hierdie uitdrukking.
Dankie dat jy deel. Jy het 'n paar stukkende skakels op hierdie bladsy. FYI.
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..
Fantasties!!!!! Dankie.
Puik werk ou! Eenvoudig en effektief. Baie dankie vir die deel!
dankie
Goed, dankie. Maar... Wat is 'n voorbeeld van 'n STERK pw? 'kan nie een kry nie!-{}
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.
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!
dankie dit werk uitstekend.
Dankie dit werk goed
Ek waardeer dit baie dat jy baie keer hierna gesoek is, maar laastens het ek jou pos gekry en is regtig verstom. DANKIE
Dankie maat. Sopas op my webwerf ontplooi en dit werk baie goed.
Hou daarvan om dit te hoor! Jy is baie welkom!
Ek waardeer dat jy deel! Het gesoek om die wagwoordsterkte op ons webwerf te verbeter en hierdie een het gewerk soos ek wou hê. Baie dankie!
Dankie, hoop jy kan dit aanpas soos nodig.
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!!
Heerlik om te hoor!