Patikrinkite slaptažodžio stiprumą naudodami „JavaScript“ ir įprastus posakius

Patikrinkite slaptažodžio stiprumą naudodami „JavaScript“ ir įprastus posakius

Atlikau keletą tyrimų, norėdamas rasti gerą naudojamo slaptažodžio stiprumo tikrintuvo pavyzdį JavaScript ir Reguliarūs posakiai (Regex). Mano darbo programoje mes darome pranešimą atgal, kad patikrintume slaptažodžio stiprumą, ir tai yra gana nepatogu mūsų vartotojams.

Kas yra „Regex“?

Reguliari išraiška yra simbolių seka, apibrėžianti paieškos modelį. Paprastai tokius modelius naudoja eilučių paieškos algoritmai rasti or rasti ir pakeisti operacijos stygomis arba įvesties patvirtinimas. 

Šis straipsnis tikrai nėra skirtas išmokyti jus reguliariai reikšti. Tiesiog žinokite, kad galimybė naudoti įprastas išraiškas visiškai supaprastins jūsų kūrimą, kai ieškosite raštų tekste. Taip pat svarbu pažymėti, kad daugumoje kūrimo kalbų buvo optimizuotas reguliarių išraiškų naudojimas ... taigi, užuot analizavęs ir ieškodamas eilutes nuosekliai, „Regex“ paprastai yra daug greitesnis tiek serveryje, tiek kliente.

Nemažai ieškojau internete, kol radau pavyzdys kai kurių puikių reguliariųjų išraiškų, ieškančių ilgio, simbolių ir simbolių derinio. Tačiau mano skoniui kodas buvo šiek tiek perteklinis ir pritaikytas .NET. Taigi supaprastinau kodą ir įdėjau jį į „JavaScript“. Tai leidžia realiu laiku patvirtinti slaptažodžio stiprumą kliento naršyklėje prieš paskelbiant jį atgal ... ir suteikia vartotojui šiek tiek atsiliepimų apie slaptažodžio stiprumą.

Įveskite slaptažodį

Kiekvienu klaviatūros paspaudimu slaptažodis tikrinamas pagal įprastą išraišką, o po to vartotojui pateikiamas grįžtamasis ryšys.




Įveskite slaptažodį

Štai kodas

Šis Reguliarūs posakiai atlikite fantastišką darbą, kad sumažintumėte kodo ilgį:

  • Daugiau personažų - Jei ilgis yra mažesnis nei 8 simboliai.
  • Silpnas - Jei ilgis yra mažesnis nei 10 simbolių ir jame nėra simbolių, didžiųjų raidžių, teksto derinio.
  • vidutinis - Jei ilgis yra 10 ar daugiau simbolių ir turi simbolių, didžiųjų raidžių, teksto derinį.
  • Stiprus - Jei ilgis yra 14 ar daugiau simbolių ir turi simbolių, didžiųjų raidžių, teksto derinį.

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

Jūsų slaptažodžio užklausos grūdinimas

Labai svarbu ne tik patvirtinti slaptažodžio kūrimą „Javascript“. Tai leistų visiems, turintiems naršyklės kūrimo įrankius, apeiti scenarijų ir naudoti norimą slaptažodį. Prieš saugodami slaptažodį savo platformoje, VISADA turėtumėte naudoti serverio patikrą, kad patvirtintumėte slaptažodžio stiprumą.

34 komentarai

  1. 1
  2. 2

    AČIŪ! AČIŪ! AČIŪ! 2 savaites kvailiojau su velniškai slaptažodžio stiprumo kodu iš kitų svetainių ir traukiausi plaukus. Jūsų yra trumpas, veikia taip, kaip aš noriu, o geriausia, kad javascript naujokas gali lengvai modifikuoti! Norėjau užfiksuoti stiprumo verdiktą ir neleisti, kad forma paskelbtų iš tikrųjų atnaujinti vartotojo slaptažodį, nebent jis atitiktų stiprumo testą. Kitų žmonių kodas buvo per sudėtingas arba neveikė tinkamai, ar dar kažkas. Aš tave myliu! XXXXX

  3. 4

    ačiū Dievui už žmones, kurie iš tikrųjų gali tinkamai parašyti kodo dalį.
    Turėjau tą pačią patirtį kaip ir Janis.

    Tai veikia iš karto, o tai puikiai tinka žmonėms, tokiems kaip aš, kurie nemoka koduoti javascript!

  4. 5
  5. 6

    Sveiki, visų pirma labai ačiū už pastangas, bandžiau naudoti su Asp.net, bet nepavyko, naudoju

    vietoj žymos, ir ji neveikė, kokių nors pasiūlymų?!

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

    „P@s$w0rD“ rodomas stipriai, nors jis būtų gana greitai nulaužtas naudojant žodyno ataką...
    Manau, kad norint įdiegti tokią funkciją profesionaliame sprendime, svarbu šį algoritmą derinti su žodyno patikra.

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

    Tokia paprasta ir fantastiška išraiška. Aš, kaip bandytojas, išvedau savo TC iš šios išraiškos.

  17. 18
  18. 19

    ar kas nors gali pasakyti, kodėl man jis neveikė..

    Nukopijavau visą kodą ir įklijavau į notepad++, bet jis visai neveikia?
    Prašau padėkite man..

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

    Šio tipo „jėgos tikrintuvas“ veda žmones labai pavojingu keliu. Ji vertina simbolių įvairovę, o ne slaptafrazės ilgį, todėl trumpesni ir įvairesni slaptažodžiai vertinami kaip stipresni nei ilgesni, ne tokie skirtingi slaptažodžiai. Tai klaidinga klaida, dėl kurios jūsų naudotojai susidurs su rimta įsilaužimo grėsme.

    • 25

      Aš nesutinku, Džordana! Pavyzdys buvo tiesiog pateiktas kaip scenarijaus pavyzdys. Mano rekomendacija žmonėms yra naudoti slaptažodžių valdymo įrankį, kad sukurtumėte nepriklausomas slaptafrazes bet kuriai svetainei, kuri yra unikali. Dėkoju!

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

    Jūs esate gyvų žmonių gelbėtojas! Aš analizavau eilutes kairėje dešinėje ir centre ir maniau, kad yra geresnis būdas, ir radau jūsų kodo dalį naudodamas Regex. Galėjau su juo susitvarkyti savo svetainę... Jūs neįsivaizduojate, kiek tai padėjo. Labai ačiū Douglas!!

Ką manote?

Ši svetainė naudoja "Akismet", kad sumažintų šlamštą. Sužinokite, kaip apdorojamas jūsų komentaras.