Ik die wat ûndersyk nei it finen fan in goed foarbyld fan in wachtwurdsterkte-kontrôler dy't brûkt JavaSkript en Reguliere ekspresjes (Regex). Yn 'e applikaasje by myn wurk dogge wy in berjocht werom om de sterkte fan it wachtwurd te ferifiearjen en it is heul ûngemaklik foar ús brûkers.
Wat is Regex?
In reguliere ekspresje is in folchoarder fan karakters dy't in sykpatroan definiearje. Normaal wurde sokke patroanen brûkt troch algoritmen foar string sykje fine or fine en ferfange operaasjes op snaren, of foar validaasje fan ynput.
Dit artikel is perfoarst net om jo reguliere ekspresjes te learen. Wit gewoan dat de mooglikheid om Regular Expressions te brûken jo ûntwikkeling absolút sil ferienfâldigjen as jo sykje nei patroanen yn tekst. It is ek wichtich om op te merken dat de measte ûntwikkelingstalen it gebrûk fan reguliere ekspresje hawwe optimalisearre ... dus ynstee fan stapjes foar stapjen te analysearjen en te sykjen, is Regex typysk sawol tsjinner as client-kant folle rapper.
Ik socht it web nochal wat foardat ik fûn in foarbyld fan guon geweldige Regular Expressions dy't sykje nei in kombinaasje fan lingte, karakters en symboalen. De koade wie lykwols in bytsje oermjittich foar myn smaak en oanpast foar .NET. Dat ik haw de koade ferienfâldige en yn JavaScript set. Dêrtroch valideart de wachtwurdsterkte yn real-time op 'e browser fan' e kliïnt foardat it werom wurdt pleatst ... en leveret wat feedback oan 'e brûker oer de krêft fan it wachtwurd.
Typ in wachtwurd
By elke streek fan it toetseboerd wurdt it wachtwurd hifke oan 'e reguliere ekspresje en dan wurdt feedback jûn oan de brûker yn in span derûnder.
Typ Wachtwurd
Hjir is de koade
De Reguliere ekspresjes in fantastysk wurk dwaan om de lingte fan 'e koade te minimalisearjen:
- Mear karakters - As de lingte minder is dan 8 karakters.
- weak - As de lingte minder is dan 10 karakters en gjin kombinaasje fan symboalen, kapten, tekst befettet.
- medium - As de lingte 10 karakters of mear is en in kombinaasje hat fan symboalen, kapten, tekst.
- Sterk - As de lingte 14 karakters of mear is en in kombinaasje hat fan symboalen, kapten, tekst.
<script language="javascript">
function passwordChanged() {
var strength = document.getElementById('strength');
var strongRegex = new RegExp("^(?=.{14,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
var mediumRegex = new RegExp("^(?=.{10,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
var enoughRegex = new RegExp("(?=.{8,}).*", "g");
var pwd = document.getElementById("password");
if (pwd.value.length == 0) {
strength.innerHTML = 'Type Password';
} else if (false == enoughRegex.test(pwd.value)) {
strength.innerHTML = 'More Characters';
} else if (strongRegex.test(pwd.value)) {
strength.innerHTML = '<span style="color:green">Strong!</span>';
} else if (mediumRegex.test(pwd.value)) {
strength.innerHTML = '<span style="color:orange">Medium!</span>';
} else {
strength.innerHTML = '<span style="color:red">Weak!</span>';
}
}
</script>
<input name="password" id="password" type="text" size="15" maxlength="100" onkeyup="return passwordChanged();" />
<span id="strength">Type Password</span>
Ferhurding fan jo wachtwurdoanfraach
It is essensjeel dat jo de wachtwurdkonstruksje net allinich falidearje yn jo Javascript. Dit soe elkenien ynskeakelje mei browser-ûntwikkelingstools om it skript te rûnwei en it wachtwurd te brûken dat se wolle. Jo moatte ALTYD in tsjek fan 'e server brûke om de wachtwurdsterkte te validearjen foardat jo dizze op jo platfoarm opslaan.
Ik fûn in oare wachtwurdsterkte checkers. Harren algoritme basearre op wurden wurdboek. Besykje ien op microsoft.com - http://www.microsoft.com/protect/yourself/password/checker.mspx en ien op itsimpl.com - http://www.itsimpl.com
DANKEWOL! DANKEWOL! DANKEWOL! Ik haw 2 wiken narre mei ferdomde wachtwurdsterktekoade fan oare websides en myn hier útlutsen. Yours is koart, wurket krekt sa't ik wol en it bêste fan alles, maklik foar in javascript-novice om te feroarjen! Ik woe it krêftbeoardieling fêstlizze en it formulier net litte litte om it wachtwurd fan 'e brûker feitlik te aktualisearjen, útsein as it de sterktetest foldie. De koade fan oaren wie te yngewikkeld of wurke net goed of wat oars. Ik hâld fan dy! XXXXXX
Gjin dank! Gjin dank! Gjin dank!
Ik hâld ek fan dy!
tankje god foar minsken dy't eins in stik koade goed skriuwe kinne.
Hie deselde ûnderfining as Janis.
Dit wurket direkt út 'e doaze, wat perfekt is foar minsken lykas my dy't JavaScript net kinne koade!
Tankewol foar it skriuwen fan in stikje koade dat docht krekt wat it seit op 'e blikje!
Hoi, yn it foarste plak in protte tank foar jo ynspanningen, ik besocht dit te brûken mei Asp.net, mar it wurke net, ik brûk
ynstee fan tag, en it wurke net, gjin suggestjes?!
Oan Nisreen: de koade yn it markearre fak wurket net mei in cut'n'paste. It inkelde sitaat is ferkeard. De koade fan 'e demonstraasjelink is lykwols goed.
Hee, ik fyn dyn skript leuk! Ik haw it oerset yn it Nederlânsk, en ik haw it hjir op myn foarum pleatst!
geweldich wurk! krekt hoe't it moat dien wurde op de klant
hiel moai wurk….
Tank Douglas, ik brûk it foar myn hjoeddeistige baan.
"P@s$w0rD" toant sterk, hoewol it frij rap soe wurde kraken mei in wurdboekoanfal ...
Om sa'n funksje yn te setten op in profesjonele oplossing, leau ik dat it wichtich is om dit algoritme te kombinearjen mei in wurdboekkontrôle.
Wurket geweldich yn XULRunner mei in bytsje feroaring rûnom. Tank!
Tank foar dizze lytse koade, ik kin it no brûke om myn wachtwurdsterkte te testen as myn besikers har wachtwurden ynfiere,
Geweldich stik kodearring
It skript wie super .Ik hie brûkt yn ús hjoeddeiske projekt
Tige tank for dielen!
Sa ienfâldich en fantastysk útdrukking. Ik as tester haw myn TC's ôflaat fan dizze útdrukking.
Tank foar it dielen. Jo hawwe in pear brutsen keppelings op dizze side. FYI.
kin immen fertelle wêrom't it fan my net wurke ..
ik haw alle koade kopieare en plakke yn notepad ++, mar it wurket hielendal net?
help my asjebleaft..
Fantastysk!!!!! Dankewol.
Geweldich wurk guy! Ienfâldich en effektyf. Tige tank foar it dielen!
Dankewol
Goed, thx. Mar... Wat is in foarbyld fan in STERKE pw? 'kin net ien fine!-{}
Dit soarte fan "sterkte checker" liedt minsken del in hiel gefaarlik paad. It wurdearret karakterferskaat oer passphrase-lingte, wêrtroch it koartere, mear ferskaat wachtwurden as sterker as langere, minder ferskaat wachtwurden beoardielet. Dat is in mislediging dy't jo brûkers yn problemen sil bringe as se oait te krijen hawwe mei in serieuze hackbedriging.
Ik bin it net iens, Jordan! It foarbyld waard gewoan útsteld as foarbyld fan it skript. Myn oanbefelling foar minsken is om in ark foar wachtwurdbehear te brûken om unôfhinklike passphrases te meitsjen foar elke side dy't der unyk is. Tank!
tank it wurket geweldich.
Tankewol dat it goed wurket
Ik wurdearje it wirklik dat jo dit in protte kearen socht binne, mar as lêste haw ik jo post krigen en bin echt fernuvere. DANKEWOL
Tankewol maat. Krekt ynset op myn webside en it wurket heul goed.
Leuk om dat te hearren! Jo binne fan herte wolkom!
Ik wurdearje dat jo dielen! Hawwe socht om de wachtwurdsterkte op ús webside te ferbetterjen en dizze wurke sa't ik woe. Tige dank!
Tankewol, hoopje dat jo it kinne oanpasse as nedich.
Jo binne in live saver! Ik wie parsing snaren lofts rjochts en sintrum en tocht dat der in bettere manier en fûn jo stikje koade mei help fan Regex. Koe dermei tinke foar myn side ... Jo hawwe gjin idee hoefolle dit holp. Tige tank Douglas !!
Geweldich om te hearren!