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 dwaasd mei ferdomde wachtwurdsterktekoade fan oare websides en myn hier útlutsen. Jo is koart, wurket krekt lykas ik wol en it bêste fan alles, maklik foar in javascript-novice om te feroarjen! Ik woe it sterkte-oardiel fêstlizze en it formulier net litte litte om it wachtwurd fan 'e brûker eins te aktualisearje, útsein as it oan' e sterkttest kaam. Oare minsken koade wie te yngewikkeld of wurke net goed of wat oars. Ik hâld fan dy! XXXXX

  3. 4

    godtank foar minsken dy't eins in stik koade goed kinne skriuwe.
    Hie deselde ûnderfining as Janis.

    Dit wurket direkt út it fak, dat is perfekt foar minsken lykas my dy't javascript net koade kinne!

  4. 5
  5. 6

    Hoi, alderearst in protte tank foar jo ynspanningen, ik besocht dit te brûken mei Asp.net, mar wurke net, ik brûk it

    ynstee fan tag, en it wurke net, suggestjes ?!

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

    "P @ s $ w0rD" toant sterk, hoewol it frij fluch soe wurde kreake mei in wurdboektoanfal ...
    Om sa'n funksje op in profesjonele oplossing yn te setten, leau ik dat it wichtich is om dit algoritme te kombinearjen mei in wurdboekkontrôle.

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

    kin immen fertelle, wêrom't it mines net wurke ..

    ik haw alle koade kopieare, en plakke nei notepad ++, mar it wurket hielendal net?
    help my asjebleaft ..

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

    Dit soarte fan "krêftkontrôler" liedt minsken in heul gefaarlik paad del. It wurdet karakterferskaat oer passphraselengte, wat liedt ta koartere, meardere wachtwurden as sterker dan langere, minder ferskate wachtwurden. Dat is in dwaling dy't jo brûkers yn problemen bringt as se ea in serieuze hackbedriging krije.

    • 25

      Ik bin it net mei iens, Jordaanje! It foarbyld waard gewoan útset as in foarbyld fan it skript. Myn oanbefelling foar minsken is om in ark foar wachtwurdbehear te brûken om unôfhinklike wachtwurden te meitsjen foar elke side dy't der unyk foar is. Tank!

  24. 26
  25. 27
  26. 28
  27. 29
  28. 31
  29. 33

    Jo binne in live saver! Ik parseare links en rjochts sintrums en tocht dat der in bettere manier is en fûn jo stik koade mei Regex. Koe der mei tinkelje 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.