Праверце надзейнасць пароля з дапамогай JavaScript і рэгулярных выразаў

Праверце надзейнасць пароля з дапамогай JavaScript і рэгулярных выразаў

Я рабіў некаторыя даследаванні, каб знайсці добры прыклад праверкі надзейнасці пароля, якая выкарыстоўвае JavaScript і Рэгулярныя выразы (Regex). У дадатку на маёй працы мы робім паведамленне, каб праверыць надзейнасць пароля, і гэта вельмі нязручна для нашых карыстальнікаў.

Што такое Regex?

Рэгулярны выраз - гэта паслядоўнасць знакаў, якія вызначаюць шаблон пошуку. Звычайна такія шаблоны выкарыстоўваюцца алгарытмамі радкавога пошуку знаходзіць or знайсці і замяніць аперацыі з радкамі альбо для праверкі ўваходных дадзеных. 

Гэты артыкул дакладна не навучыць вас рэгулярным выразам. Проста ведайце, што магчымасць выкарыстання рэгулярных выразаў абсалютна спросціць вашу распрацоўку падчас пошуку шаблонаў у тэксце. Важна таксама адзначыць, што большасць моў распрацоўкі аптымізавана выкарыстанне рэгулярных выразаў ... таму, замест таго, каб разбіраць і шукаць радкі пакрокава, Regex звычайна значна хутчэйшы як на серверы, так і на кліенце.

Я даволі шмат шукаў у Інтэрнэце, перш чым знайшоў прыклад некаторых выдатных рэгулярных выразаў, якія шукаюць спалучэнне даўжыні, знакаў і сімвалаў. Як бы там ні было, код быў крыху празмерным на мой густ і прыстасаваны для .NET. Таму я спрасціў код і змясціў яго ў JavaScript. Гэта дазваляе праверыць надзейнасць пароля ў рэжыме рэальнага часу ў аглядальніку кліента, перш чым адпраўляць яго назад ... і забяспечвае некаторую зваротную сувязь з карыстальнікам наконт надзейнасці пароля.

Увядзіце пароль

Пры кожным націску клавіятуры пароль правяраецца на рэгулярны выраз, а затым карыстальніку прадастаўляецца зваротная сувязь у прамежку пад ім.




Калі ласка, увядзіце пароль

Вось Кодэкс

,en Рэгулярныя выразы зрабіць фантастычную працу, мінімізуючы даўжыню кода:

  • Больш персанажаў - Калі даўжыня менш за 8 сімвалаў.
  • Слабы - Калі даўжыня менш за 10 сімвалаў і не ўтрымлівае камбінацыі сімвалаў, вялікіх літар і тэксту.
  • серада - Калі даўжыня складае 10 і больш сімвалаў і мае спалучэнне сімвалаў, вялікіх літар і тэксту.
  • Моцны - Калі даўжыня складае 14 знакаў і больш і мае спалучэнне сімвалаў, вялікіх літар, тэксту.

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

Зацвярджэнне запыту пароля

Вельмі важна, каб вы не проста правяралі канструкцыю пароля ў сваім Javascript. Гэта дазволіць любому, хто мае сродкі распрацоўкі браўзэра, абысці сцэнар і выкарыстоўваць любы пароль, які ім захочацца. Вы павінны ВСЕГДА выкарыстоўваць серверную праверку для праверкі надзейнасці пароля, перш чым захоўваць яго на сваёй платформе.

34 Каментары

  1. 1
  2. 2

    ДЗЯКУЙ! ДЗЯКУЙ! ДЗЯКУЙ! Я ўжо 2 тыдні дурэю з чортавым кодам надзейнасці пароля з іншых сайтаў і вырываю валасы. Ваш кароткі, працуе гэтак жа, як я хачу, і лепш за ўсё, пачаткоўцу javascript лёгка змяніць! Я хацеў зафіксаваць вердыкт сілы і не дазволіць паведамленню формы фактычна абнаўляць пароль карыстальніка, калі ён не адпавядае тэсту на трываласць. Код іншых людзей быў занадта складаны альбо не працаваў правільна, альбо нешта іншае. Я цябе кахаю! XXXXX

  3. 4

    дзякуй Богу за людзей, якія на самой справе могуць правільна напісаць фрагмент кода.
    Меў такі ж досвед, як Яніс.

    Гэта працуе адразу, што ідэальна падыходзіць для такіх людзей, як я, якія не могуць кодаваць JavaScript!

  4. 5
  5. 6

    Прывітанне, перш за ўсё дзякуй за вашыя намаганні, я паспрабаваў выкарыстаць гэта з Asp.net, але не атрымалася, я выкарыстоўваю

    замест тэга, і гэта не спрацавала, якія-небудзь прапановы ?!

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

    «P @ s $ w0rD» паказваецца моцна, хаця ён можа быць даволі хутка ўзламаны пры дапамозе дыктатарскай атакі ...
    Каб разгарнуць такую ​​функцыю на прафесійным рашэнні, я лічу, што важна аб'яднаць гэты алгарытм з праверкай на слоўніка.

  11. 12
  12. 13

    Дзякуй за гэты маленькі код, зараз я магу выкарыстоўваць яго для праверкі надзейнасці пароля, калі мае наведвальнікі ўводзяць свае паролі,

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

    можа хто-небудзь скажа, чаму ў мяне гэта не атрымалася ..

    я скапіяваў увесь код і ўстаў яго ў нататнік ++, але ён зусім не працуе?
    калі ласка, дапамажы мне..

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

    Гэты тып "праверкі трываласці" вядзе людзей па вельмі небяспечным шляху. Ён ацэньвае разнастайнасць сімвалаў у параўнанні з даўжынёй парольнай фразы, у выніку чаго ацэньвае больш кароткія і разнастайныя паролі як больш моцныя, чым больш доўгія і менш разнастайныя паролі. Гэта памылка, якая прывядзе карыстальнікаў да непрыемнасцей, калі яны калі-небудзь сутыкнуцца з сур'ёзнай пагрозай узлому.

    • 25

      Я не згодны, Джордан! Прыклад быў проста выкладзены як прыклад сцэнарыя. Мая рэкамендацыя людзям - выкарыстоўваць інструмент кіравання паролямі для стварэння незалежных парольных фраз для любога ўнікальнага для яго сайта. Дзякуй!

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

    Вы жывая застаўка! Я разбіраў радкі злева направа і па цэнтры і думаў, што ёсць лепшы спосаб, і знайшоў ваш фрагмент кода з дапамогай Regex. Быў у курсе гэтага для майго сайта ... Вы паняцця не маеце, наколькі гэта дапамагло. Вялікі дзякуй Дуглас !!

Што вы думаеце?

Гэты сайт выкарыстоўвае Akismet для барацьбы са спамам. Даведайцеся, як дадзеныя апрацоўваюцца каментар.