
Gwirio Cryfder Cyfrinair gyda JavaScript neu jQuery ac Ymadroddion Rheolaidd (Gydag Enghreifftiau Ochr Gweinydd, Rhy!)
Roeddwn yn gwneud rhywfaint o ymchwil ar ddod o hyd i enghraifft dda o wiriwr Cryfder Cyfrinair sy'n ei ddefnyddio Javascript ac Mynegiadau Rheolaidd (regex). Yn y cais yn fy ngwaith, rydym yn gwneud post yn ôl i wirio cryfder y cyfrinair ac mae'n eithaf anghyfleus i'n defnyddwyr.
Beth yw Regex?
Mae mynegiad rheolaidd yn ddilyniant o gymeriadau sy'n diffinio patrwm chwilio. Fel arfer, defnyddir patrymau o'r fath gan algorithmau chwilio llinyn ar gyfer dod o hyd i or dod o hyd i a disodli gweithrediadau ar dannau, neu ar gyfer dilysu mewnbwn.
Yn bendant, nid yw'r erthygl hon i ddysgu ymadroddion rheolaidd i chi. Dim ond gwybod y bydd y gallu i ddefnyddio Mynegiadau Rheolaidd yn symleiddio'ch datblygiad yn llwyr wrth i chi chwilio am batrymau mewn testun. Mae'n bwysig nodi hefyd bod y rhan fwyaf o ieithoedd datblygu wedi gwneud y defnydd gorau o fynegiant yn rheolaidd ... felly yn hytrach na dosrannu a chwilio llinynnau gam wrth gam, mae Regex fel arfer yn llawer cyflymach o ran y gweinydd a'r cleient.
Fe wnes i chwilio'r we dipyn cyn i mi ddod o hyd enghraifft o rai Mynegiadau Rheolaidd gwych sy'n edrych am gyfuniad o hyd, cymeriadau, a symbolau. Fodd bynnag, roedd y cod ychydig yn ormodol at fy chwaeth ac wedi'i deilwra ar gyfer .NET. Felly yr wyf yn symleiddio'r cod a'i roi yn JavaScript. Mae hyn yn ei gwneud yn ddilysu cryfder y cyfrinair mewn amser real ar borwr y cleient cyn ei bostio'n ôl ... ac yn darparu rhywfaint o adborth i'r defnyddiwr ar gryfder y cyfrinair.
Cyfrinair Math A.
Gyda phob strôc o'r bysellfwrdd, profir y cyfrinair yn erbyn y mynegiant rheolaidd ac yna rhoddir adborth i'r defnyddiwr mewn rhychwant oddi tano.
Swyddogaeth Cryfder Cyfrinair JavaScript
Roedd Mynegiadau Rheolaidd gwneud gwaith gwych o leihau hyd y cod. Mae'r swyddogaeth Javascript hon yn gwirio cryfder cyfrinair ac a yw'n hawdd, yn ganolig, yn anodd neu'n anodd iawn ei ddyfalu ei rwystro. Wrth i'r person deipio, mae'n dangos awgrymiadau ar ei annog i fod yn gryfach. Mae'n dilysu'r cyfrinair yn seiliedig ar:
- Hyd – Os yw'r hyd yn llai neu'n fwy nag 8 nod.
- Achos Cymysg – Os oes gan y cyfrinair nodau priflythrennau a llythrennau bach.
- Niferoedd - Os yw'r cyfrinair yn cynnwys rhifau.
- Cymeriadau Arbennig - Os yw'r cyfrinair yn cynnwys nodau arbennig.
Mae'r swyddogaeth yn dangos yr anhawster yn ogystal â rhai awgrymiadau ar galedu'r cyfrinair ymhellach.
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;
}
}
Os hoffech chi ddiweddaru lliw y domen, gallwch chi wneud hynny hefyd trwy ddiweddaru'r cod ar ôl y // Return results
llinell.
// Get the paragraph element
var strengthElement = document.getElementById("passwordStrength");
// Return results
if (strength < 2) {
strengthElement.textContent = "Easy to guess. " + tips;
strengthElement.style.color = "red";
} else if (strength === 2) {
strengthElement.textContent = "Medium difficulty. " + tips;
strengthElement.style.color = "orange";
} else if (strength === 3) {
strengthElement.textContent = "Difficult. " + tips;
strengthElement.style.color = "black";
} else {
strengthElement.textContent = "Extremely difficult. " + tips;
strengthElement.style.color = "green";
}
jQuery Swyddogaeth Cryfder Cyfrinair
Gyda jQuery, nid oes yn rhaid i ni ysgrifennu'r ffurflen gyda diweddariad ar fewnbwn mewn gwirionedd:
<form>
<label for="password">Enter password:</label>
<input type="password" id="password">
<p id="password-strength"></p>
</form>
Gallwn hefyd addasu lliw y negeseuon os hoffem.
$(document).ready(function() {
$('#password').on('input', function() {
var password = $(this).val();
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. ";
}
// Update the text and color based on the password strength
var passwordStrengthElement = $('#password-strength');
if (strength < 2) {
passwordStrengthElement.text("Easy to guess. " + tips);
passwordStrengthElement.css('color', 'red');
} else if (strength === 2) {
passwordStrengthElement.text("Medium difficulty. " + tips);
passwordStrengthElement.css('color', 'orange');
} else if (strength === 3) {
passwordStrengthElement.text("Difficult. " + tips);
passwordStrengthElement.css('color', 'black');
} else {
passwordStrengthElement.text("Extremely difficult. " + tips);
passwordStrengthElement.css('color', 'green');
}
});
});
Caledu Eich Cais Cyfrinair
Mae'n hanfodol nad ydych chi'n dilysu'r gwaith adeiladu cyfrinair yn eich Javascript yn unig. Byddai hyn yn galluogi unrhyw un sydd ag offer datblygu porwr i osgoi'r sgript a defnyddio pa gyfrinair bynnag yr hoffent. Dylech BOB AMSER ddefnyddio gwiriad ochr gweinydd i ddilysu cryfder y cyfrinair cyn ei storio yn eich platfform.
Swyddogaeth PHP Ar gyfer Cryfder Cyfrinair
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";
}
}
Swyddogaeth Python Ar gyfer Cryfder Cyfrinair
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# Swyddogaeth Ar gyfer Cryfder Cyfrinair
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";
}
}
Swyddogaeth Java Ar gyfer Cryfder Cyfrinair
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";
}
}
Ac os ydych chi'n chwilio am generadur cyfrinair gwych yn unig, rydw i wedi adeiladu offeryn ar-lein bach neis ar gyfer hynny.
Fe wnes i ddod o hyd i wirwyr cryfder cyfrinair arall. Eu algorithm yn seiliedig ar eiriadur geiriau. Rhowch gynnig ar un yn microsoft.com - http://www.microsoft.com/protect/yourself/password/checker.mspx ac un yn itsimpl.com - http://www.itsimpl.com
DIOLCH! DIOLCH! DIOLCH! Rydw i wedi bod yn twyllo o gwmpas am 2 wythnos gyda cod cryfder cyfrinair damn o wefannau eraill a thynnu fy ngwallt allan. Mae'r eiddoch yn fyr, mae'n gweithio yn union fel rydw i eisiau a gorau oll, hawdd i ddechreuwr javascript ei addasu! Roeddwn i eisiau dal y dyfarniad cryfder a pheidio â gadael i'r ffurflen bostio i ddiweddaru cyfrinair y defnyddiwr mewn gwirionedd oni bai ei fod yn bodloni'r prawf cryfder. Roedd cod pobl eraill yn rhy gymhleth neu ddim yn gweithio'n iawn neu rywbeth arall. Rwy'n dy garu di! XXXXXX
Croeso! Croeso! Croeso!
Rwy'n dy garu di hefyd!
Diolch am ysgrifennu darn o god sy'n gwneud yn union yr hyn y mae'n ei ddweud ar y can!
Helo, yn gyntaf oll diolch yn fawr am eich ymdrechion, ceisiais ddefnyddio hwn gydag Asp.net ond heb weithio, rwy'n ei ddefnyddio
yn lle tag, ac ni weithiodd, unrhyw awgrymiadau?!
I Nisreen: nid yw'r cod yn y blwch wedi'i amlygu yn gweithio gyda toriad a phast. Mae'r dyfyniad sengl yn ddryslyd. Mae cod y ddolen arddangos yn iawn serch hynny.
Hei, dwi'n hoffi'ch sgript! Fe wnes i ei gyfieithu i'r Iseldiroedd, a'i bostio yn fy fforwm yma!
swydd ardderchog! yn union sut y dylid ei wneud ar y cleient
swydd braf iawn….
Diolch Douglas, rwy'n ei ddefnyddio ar gyfer fy swydd bresennol.
Mae “P @ s $ w0rD” yn dangos yn gryf, er y byddai’n cael ei gracio’n weddol gyflym gydag ymosodiad geiriol…
I ddefnyddio nodwedd o'r fath ar ddatrysiad proffesiynol, credaf ei bod yn bwysig cyfuno'r algorithm hwn â gwiriad geiriol.
Yn gweithio'n wych yn XULRunner gydag ychydig yn newid o gwmpas. Diolch!
Diolch am y cod bach hwn, gallaf nawr ei ddefnyddio i brofi cryfder fy nghyfrinair pan fydd fy ymwelwyr yn nodi eu cyfrineiriau,
Darn gwych o godio
Roedd y sgript yn wych. Roeddwn i wedi ei defnyddio yn ein prosiect cyfredol
Diolch i chi am rannu!
Mynegiant mor syml a gwych. Dechreuais i fel profwr fy TCs o'r ymadrodd hwn.
Diolch am rannu. Mae gennych ychydig o ddolenni wedi'u torri ar y dudalen hon. FYI.
a all rhywun ddweud, pam na weithiodd fy un i.
copïais yr holl god, a'i gludo i notepad ++, ond nid yw'n gweithio o gwbl?
helpwch fi os gwelwch yn dda.
Ffantastig !!!!! Diolch.
Boi swydd gwych! Syml ac effeithiol. Diolch yn fawr am rannu!
diolch
Da, thx. Ond… Beth yw enghraifft o bwll CRYF? 'methu dod o hyd i un! - {}
Mae'r math hwn o “wiriwr cryfder” yn arwain pobl i lawr llwybr peryglus iawn. Mae'n gwerthfawrogi amrywiaeth cymeriad dros hyd cyfrinair, gan ei arwain i raddio cyfrineiriau byrrach, mwy amrywiol fel rhai cryfach na chyfrineiriau hirach, llai amrywiol. Mae hynny'n wallgofrwydd a fydd yn peri trafferth i'ch defnyddwyr os byddant byth yn wynebu bygythiad hacio difrifol.
Dwi ddim yn anghytuno, Jordan! Yn syml, rhoddwyd yr enghraifft allan fel enghraifft o'r sgript. Fy argymhelliad i bobl yw defnyddio teclyn rheoli cyfrinair i greu cyfeirnodau annibynnol ar gyfer unrhyw wefan sy'n unigryw iddo. Diolch!
diolch mae'n gweithio'n wych.
Diolch u ei ddirwy gweithio
Rwy'n gwerthfawrogi'n fawr eich bod wedi cael eich chwilio hyn lawer gwaith ond o'r diwedd cefais eich post ac rwyf wedi gwirioni. DIOLCH
Diolch, mêt. Newydd gael ei ddefnyddio ar fy ngwefan ac mae'n gweithio'n dda iawn.
Wrth fy modd yn clywed hynny! Mae croeso mawr i chi!
Rwy'n gwerthfawrogi eich bod chi'n rhannu! Wedi bod yn edrych i wella cryfder cyfrinair ar ein gwefan ac roedd yr un hon yn gweithio fel yr oeddwn i eisiau. Diolch yn fawr iawn!
Diolch, gobeithio y gallwch ei addasu yn ôl yr angen.
Rydych chi'n arbedwr byw! Roeddwn yn dosrannu tannau i'r chwith ac i'r canol ac roeddwn i'n meddwl bod ffordd well a dod o hyd i'ch darn o god gan ddefnyddio Regex. Yn gallu tincio ag ef ar gyfer fy safle ... Nid oes gennych unrhyw syniad faint a helpodd hyn. Diolch gymaint Douglas !!
Gwych clywed!