
Suriin ang Lakas ng Password gamit ang JavaScript at Mga Regular na Expression (Na may Mga Halimbawa sa Side ng Server, Gayundin!)
Gumagawa ako ng ilang pagsasaliksik sa paghahanap ng isang magandang halimbawa ng isang Checker ng Lakas ng Password na gumagamit JavaScript at Mga Regular na Pagpapahayag (Regex). Sa application sa aking trabaho, gumawa kami ng isang post pabalik upang ma-verify ang lakas ng password at medyo abala para sa aming mga gumagamit.
Ano ang Regex?
Ang isang regular na expression ay isang pagkakasunud-sunod ng mga character na tumutukoy sa isang pattern ng paghahanap. Karaniwan, ang mga naturang pattern ay ginagamit ng mga algorithm sa paghahanap ng string para sa mahanap or hanapin at palitan mga pagpapatakbo sa mga string, o para sa pagpapatunay ng pag-input.
Ang artikulong ito ay tiyak na hindi magturo sa iyo ng mga regular na expression. Basta alam na ang kakayahang gumamit ng Mga Regular na expression ay ganap na pinapasimple ang iyong pag-unlad habang naghahanap ka para sa mga pattern sa teksto. Mahalaga rin na tandaan na ang karamihan sa mga wika ng pag-unlad ay na-optimize ang regular na paggamit ng expression ... kaya sa halip na pag-parse at paghahanap ng mga hakbang-hakbang, ang Regex ay karaniwang mas mabilis sa parehong server at panig ng kliyente.
Medyo naghanap ako sa web bago ko nahanap isang halimbawa ng ilang magagaling na Regular na Pagpapahayag na naghahanap ng isang kumbinasyon ng haba, character, at simbolo. Gayunpaman, ang code ay medyo labis para sa aking panlasa at pinasadya para sa .NET. Kaya pinasimple ko ang code at inilagay ito sa JavaScript. Ginagawa nitong patunayan ang lakas ng password nang real-time sa browser ng client bago i-post ito pabalik ... at nagbibigay ng ilang puna sa gumagamit sa lakas ng password.
Mag-type ng Isang Password
Sa bawat stroke ng keyboard, ang password ay nasubok laban sa regular na expression at pagkatapos ay ibinibigay ang feedback sa gumagamit sa isang span sa ilalim nito.
Narito ang Code
Ang Mga Regular na Pagpapahayag gumawa ng isang kamangha-manghang trabaho ng pagliit ng haba ng code. Sinusuri ng function ng Javascript na ito ang lakas ng isang password at kung ang pag-foil nito ay madali, katamtaman, mahirap, o napakahirap hulaan. Habang nagta-type ang tao, nagpapakita ito ng mga tip sa paghikayat dito na maging mas malakas. Pinapatunayan nito ang password batay sa:
- Haba – Kung ang haba ay mas mababa o higit sa 8 character.
- Mixed case – Kung ang password ay may parehong upper at lower case na character.
- Numero – Kung ang password ay may kasamang mga numero.
- Espesyal na Character – Kung ang password ay may kasamang mga espesyal na character.
Ipinapakita ng function ang kahirapan pati na rin ang ilang mga tip sa pagpapatigas pa ng password.
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;
}
}
Pagpapatigas ng Iyong Kahilingan sa Password
Mahalaga na hindi mo lamang mapatunayan ang pagbuo ng password sa loob ng iyong Javascript. Paganahin nito ang sinumang may mga tool sa pag-unlad ng browser upang i-bypass ang script at gamitin ang anumang nais nilang password. Dapat mong palaging gumamit ng isang check sa panig ng server upang mapatunayan ang lakas ng password bago itago ito sa iyong platform.
PHP Function Para sa Lakas ng Password
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 Function Para sa Lakas ng Password
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# Function Para sa Lakas ng Password
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 Function Para sa Lakas ng Password
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";
}
}
Nakakita ako ng isa pang mga checker ng lakas ng password. Ang kanilang algorithm batay sa mga salitang diksyunaryo. Subukan ang isa sa microsoft.com - http://www.microsoft.com/protect/yourself/password/checker.mspx at isa sa itsimpl.com - http://www.itsimpl.com
SALAMAT! SALAMAT! SALAMAT! Nagloloko ako ng 2 linggo sa sumpain ang lakas ng password code mula sa ibang mga website at inilabas ang aking buhok. Maikli ang sa iyo, gumagana tulad ng gusto ko at pinakamaganda sa lahat, madali para mabago ng isang baguhan sa javascript! Nais kong makuha ang hatol ng lakas at huwag hayaan ang post na form na aktwal na i-update ang password ng gumagamit maliban kung natutugunan nito ang pagsubok sa lakas. Ang code ng ibang tao ay masyadong kumplikado o hindi gumana ng tama o iba pa. Mahal kita! XXXXX
Walang anuman! Walang anuman! Walang anuman!
Mahal din kita!
Salamat sa pagsulat ng isang piraso ng code na eksaktong ginagawa ang sinasabi nito sa lata!
Kumusta, una sa lahat maraming salamat sa iyong mga pagsisikap, sinubukan kong gamitin ito sa Asp.net ngunit hindi gumana, gumagamit ako
sa halip na i-tag, at hindi ito gumana, anumang mga mungkahi ?!
Upang Nisreen: ang code sa naka-highlight na kahon ay hindi gagana sa isang cut'n'paste. Magulo ang solong quote. Ang code ng link ng demonstration ay mabuti.
Hoy, gusto ko ang script mo! Isinalin ko ito sa dutch, at na-post ko ito sa aking forum dito!
mahusay na trabaho! eksakto kung paano ito dapat gawin sa client
napakagandang trabaho ....
Salamat Douglas, ginagamit ko ito para sa aking kasalukuyang trabaho.
Nagpapakita ang "P @ s $ w0rD" nang malakas, kahit na mabilis itong masira sa isang pag-atake ng diksyonaryo ...
Upang mai-deploy ang ganoong tampok sa isang propesyonal na solusyon, naniniwala akong mahalaga na pagsamahin ang algorithm na ito sa isang dictionnary check.
Gumagana nang mahusay sa XULRunner na may kaunting pagbabago sa paligid. Salamat!
Salamat sa maliit na code na magagamit ko na ito upang subukan ang lakas ng aking password kapag pinapasok ng aking mga bisita ang kanilang mga password,
Mahusay na piraso ng coding
Super ang script. Ginamit ko sa aming kasalukuyang proyekto
Salamat sa iyo para sa pagbabahagi!
Napakadali at kamangha-manghang pagpapahayag. Ako bilang isang tester ay nagmula sa aking mga TC mula sa ekspresyong ito.
Salamat sa Pagbabahagi. Mayroon kang ilang mga sirang link sa pahinang ito. FYI.
maaaring sabihin ng isang tao, kung bakit hindi ito gumana sa akin ..
kinopya ko ang lahat ng code, at idikit ito sa notepad ++, ngunit hindi ito gumagana sa lahat?
tulungan mo po ako ..
Kamangha-mangha !!!!! Salamat.
Mahusay na trabaho tao! Simple at mabisa. Maraming salamat sa pagbabahagi!
salamat
Mabuti, thx. Ngunit… Ano ang isang halimbawa ng isang MALAKAS pw? 'hindi makahanap ng isa! - {}
Ang ganitong uri ng "checker ng lakas" ay magdadala sa mga tao sa isang mapanganib na landas. Pinahahalagahan nito ang pagkakaiba-iba ng character sa haba ng passphrase, na humahantong sa rate na mas maikli, mas magkakaibang mga password na mas malakas kaysa sa mas mahaba, hindi gaanong magkakaibang mga password. Iyon ay isang kamalian na magugulo sa iyong mga gumagamit kung nahaharap man sila sa isang seryosong banta sa pag-hack.
Hindi ako sang-ayon, Jordan! Ang halimbawa ay simpleng inilabas bilang isang halimbawa ng script. Ang aking rekomendasyon para sa mga tao ay upang magamit ang isang tool sa pamamahala ng password upang lumikha ng mga independiyenteng mga passphrase para sa anumang site na kakaiba dito. Salamat!
salamat gumagana ito ng mahusay.
Salamat sa iyong pagtatrabaho pagmultahin
talagang pinahahalagahan na ikaw ay hinanap ng maraming beses ngunit sa wakas nakuha ko ang iyong post at talagang nababagabag ako. SALAMAT
Salamat kaibigan. Naka-deploy lamang sa aking website at ito ay gumagana nang maayos.
Mahilig marinig yan! Malugod na maligayang pagdating!
Pinahahalagahan ko ang pagbabahagi mo! Naghahanap upang mapataas ang lakas ng password sa aming website at ang isang ito ay gumana sa paraang nais ko. Maraming salamat!
Salamat, sana maipasadya mo ito kung kinakailangan.
Ikaw ay isang live saver! Nag-parse ako ng mga string ng kaliwa pakanan at gitna at naisip na mayroong isang mas mahusay na paraan at natagpuan ang iyong piraso ng code gamit ang Regex. Nagawang tinkle dito para sa aking site ... Wala kang ideya kung gaano ito nakatulong. Maraming salamat Douglas !!
Maganda pakinggan!