Kontrolearje wachtwurdsterkte mei JavaScript en reguliere ekspresjes

Kontrolearje wachtwurdsterkte mei JavaScript en reguliere ekspresjes

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.

34 Comments

  1. 1
  2. 2

    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

  3. 4

    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!

  4. 5
  5. 6

    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?!

  6. 7
  7. 8
  8. 9
  9. 10
  10. 11

    "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.

  11. 12
  12. 13

    Tank foar dizze lytse koade, ik kin it no brûke om myn wachtwurdsterkte te testen as myn besikers har wachtwurden ynfiere,

  13. 14
  14. 15
  15. 16
  16. 17
  17. 18
  18. 19

    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..

  19. 20
  20. 21
  21. 22
  22. 23
  23. 24

    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.

    • 25

      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!

  24. 26
  25. 27
  26. 28

    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

  27. 29
  28. 31
  29. 33

    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 !!

Wat tinksto?

Dizze side brûkt Akismet om spam te ferleegjen. Learje hoe't jo kommentaargegevens ferwurke wurde.