Suriin ang Lakas ng Password sa JavaScript at Regular na Mga Ekspresyon

Suriin ang Lakas ng Password sa JavaScript at Regular na Mga Ekspresyon

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

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.




Ilagay ang password

Narito ang Code

Ang Mga Regular na Pagpapahayag gumawa ng isang kamangha-manghang trabaho ng pagliit ng haba ng code:

  • Marami pang character - Kung ang haba ay nasa ilalim ng 8 mga character.
  • Mahina - Kung ang haba ay mas mababa sa 10 mga character at hindi naglalaman ng isang kumbinasyon ng mga simbolo, takip, teksto.
  • Medium - Kung ang haba ay 10 character o higit pa at may isang kumbinasyon ng mga simbolo, takip, teksto.
  • Malakas - Kung ang haba ay 14 na character o higit pa at may isang kumbinasyon ng mga simbolo, takip, teksto.

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

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 iimbak ito sa iyong platform.

34 Comments

  1. 1
  2. 2

    SALAMAT! SALAMAT! SALAMAT! Nagloloko ako ng 2 linggo sa sumpain ang lakas ng password code mula sa ibang mga website at hinuhugot ang aking buhok. Ang sa iyo ay maikli, gumagana tulad ng gusto ko at pinakamahusay sa lahat, madali para sa isang novice ng javascript na baguhin! 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

  3. 4

    salamat sa diyos para sa mga taong tunay na makakagsulat ng isang piraso ng code nang maayos.
    Nagkaroon ng parehong karanasan bilang Janis.

    Gumagana ito kaagad sa labas ng kahon na kung saan ay perpekto para sa mga taong tulad ko na hindi nakakakuha ng code javascript!

  4. 5
  5. 6

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

  6. 7

    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.

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

    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.

  11. 12
  12. 13

    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,

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

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

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

    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.

    • 25

      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!

  24. 26
  25. 27
  26. 28

    talagang pinahahalagahan na ikaw ay hinanap ng maraming beses ngunit sa wakas nakuha ko ang iyong post at talagang nababagabag ako. SALAMAT

  27. 29
  28. 31

    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!

  29. 33

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

Ano sa tingin ninyo?

Ang site na ito ay gumagamit ng Akismet upang mabawasan ang spam. Alamin kung paano naproseso ang data ng iyong komento.