Поле с паролем

    Поля для ввода паролей в браузере встречаются в разных случаях:
    • при регистрации;
    • на форме логина;
    • пароль для чего-то абстрактного.
    Каждый раз всплывают одни и те же проблемы и возникает необходимость в одинаковых шаблонных фичах. Чтобы облегчить эту рутинную задачу, я сделал js-библиотеку, которую можно конфигурировать под разные случаи — о ней и будет этот пост.

    Что не так с тем, что существует?


    Чем же нас не устраивает <input type="password" />?

    Ваш •••••• всегда скрыт. Это раздражает. Раздражает тем больше, что нельзя просто так взять и поменять тип поля с password на text, поэтому приходится что-то изобретать. Времени на такую мелочь, как пароль, редко когда выделяют много, поэтому изобретается чаще всего велосипед.

    В случае формы логина, пароль, возможно, и нет смысла показывать. С регистрацией же всё сложнее. Не все используют хранилки паролей, многие вводят пароль «руками». Его можно ввести неправильно, для этого обычно добавляют второе поле с паролем. Однако же, это издевательство над пользователем не спасает от случая, когда выбрана неправильная раскладка. Кроме того, если пользователь хочет куда-то сохранить введённый аж два раза пароль, он не может этого сделать. Некоторые вообще после проверки пароля очищают его (предполагая, что пользователь введёт его снова и на этот раз уж точно придумает такой, как надо):

    когда вы делаете так, где-то снова убивают котёнка

    Многие сайты, порталы,… валидируют пароли по своим правилам (например, что в нём должны быть цифры и буквы одновременно и длина не менее 10 символов). Таким образом, разработчик будет уверен, что пользователь не введёт что-то вроде «123». Идея здравая. Как же это выглядит на практике? Вот так:

    будь мужиком, покажи свой большой пароль

    Что это? Рейтинг скиллов нажимания на клавиши? Для чего тут вообще цвет, зачем мне надо знать какой-то процент? Есть даже такой плагин (осторожно тыкайте, кажется, сайт лёг):

    nakedpassword.com

    Если пароль по каким-либо причинам система считает слабым, всё, что я хочу увидеть — что мне ещё ввести, чтобы он вам наконец подошёл. Никаких оценок я видеть не желаю. Нет цифр, а вы их требуете ввести — так и напишите мне: введи цифру. Я уже ввёл цифру и теперь не хватает длины? Спрячьте сообщение о том, что там должны быть цифры, я это уже осознал.

    Пожалуй, самый ужасный вариант (я побоялся кликнуть на ссылку more):

    регистрация на одном очень известном сайте

    Окей, предположим, что пользователь таки дожал до ста. Чтобы он был более счастлив, результат обычно никто и не скрывает: пусть гордится своим достижением на протяжении всего процесса заполнения формы регистрации! Он заполнил всю форму и… забыл пароль. Теперь он хочет его скопировать (например, чтобы сохранить куда-то себе). Ой: а как?

    кстати, я долго думал, что не так с моим паролем, почему сообщение не исчезает

    Пароли вводят не только при регистрации. Пароли вводят ещё для других людей (например, в админке надо редактировать пароль к какому-то скрипту у партнёра или что-то в таком же духе). В таких случаях обычно добавляют кнопочку генерации пароля, которая избавит оператора от необходимости что-то придумывать (при этом, останется возможность ввести своё).

    Очевидно, что надо иметь возможность как-то скопировать сгенерированный пароль, для этого поле с паролем в самом простом случае делается обычным текстовым полем. Зашёл отредактировать другую настройку на той же страничке — увидел пароль. Показал настройку на проекторе — все увидели пароль. Не очень удобно (но времени нет, поэтому пока так и останется, всё равно ж это внутренняя админка):

    пароль с генератором

    Решаем проблемы


    Так как разные из фич надо добавлять часто и реализация их — не всегда простая задача, я написал плагин для jQuery (вообще это js-библиотека, не требующая наличия jQuery, но для краткости буду называть плагином), который позволяет сделать поле с паролем более дружелюбным. Что в нём есть и для чего это надо?

    Кнопка отображения пароля
    Она позволяет показать пароль, когда он нужен, скопировать, изменить, проверить его и скрыть снова. Пароль по желанию разработчика может быть скрыт или показан, как при создании поля, так и в любой момент:

    скрыть-показать пароль

    Замечу, что в IE10 тоже сделали нечто подобное (правда пароль нельзя скопировать и надо держать кнопку мышки нажатой, чтобы видеть или редактировать пароль открытым текстом):

    кнопка, которую добавляет IE10

    Генерация
    Чтобы добавить возможность сгенерировать пароль, можно показать кнопку (есть и подсказка, когда пользователь долго думает над паролем):

    кнопка-генератор

    Пароль получится подходящий именно под те правила, какие задумал разработчик. Если пользователь сгенерировал пароль, он автоматически отображается текстом.

    Проверка пароля
    «Сила» пароля оценивается по нескольким параметрам:
    • длина (чем меньше, тем слабее):
    • входжения символов: есть ли цифры, буквы, другое. Что именно, задаётся разработчиком в виде паттерна (например, abCD23):
    • проверка на стоп-лист (например, даже если «qwerty» или «p@ssw0rd» могут казаться алгоритму сложными паролями, на самом деле это не так). Проверяем топ 10 самых-самых, плюс то, что захочет разработчик:
    В результате получим какую-то суммарную оценку. Сравним её с «порогом прохождения» и покажем совет: добавь в свой пароль цифры (или буквы, или символы). Таким образом, получается нечёткий алгритм проверки: подойдёт как короткий пароль «p@S5», так и длинный, но где нет (например) цифр. Можно не заставлять пользователя вводить @#$, если он хочет большой пароль из букв и цифр, и наоборот.
    В сообщении пользователь увидит именно то, чего не хватает в пароле.

    Если поле не в фокусе
    , значит, пользователь хочет пока заняться другими задачами. Нет необходимости показывать ему ошибки в пароле, силу пароля или что-то ещё: покажем просто, что он или неправильный, или недостаточно надёжный (а если всё хорошо — хватит поля со звёздочками). Остальное увидит, когда предпримет попытку исправить:

    поле не в фокусе: с ошибкой и без ошибки

    Совместимость
    Так случилось, что фичи были нужны иногда и там, где не было jQuery. Поэтому он написан на «чистом» js: из-за этого получилось чуть больше кода, чем могло бы быть. Плагин дружит с jQuery и Bootstrap-ом, работает на большинстве современных и не очень браузеров (даже в IE6). Изменений в вёрстке не требуется, поэтому в случае отключённого js ничего не сломается: пользователь увидит обычное поле type=password.
    Умеет показывать сообщения на 8-ми разных языках, в зависимости от локали браузера:

    мнение плагина о пароле «qwerty» на испанском языке

    Каждую кнопку, фичу или сообщение об ошибке можно избирательно отключить или переопределить.

    Демка тут, там же описание API.
    Возможно, плагин будет полезен кому-то ещё, поэтому исходник выложен на github, если надо — пользуйтесь где угодно.
    Поделиться публикацией
    Похожие публикации
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 78
    • +11
      Однако же, это издевательство над пользователем не спасает от случая, когда выбрана неправильная раскладка. Кроме того, если пользователь хочет куда-то сохранить введённый аж два раза пароль, он не может этого сделать.
      Обычно, если я желаю куда-то сохранить пароль, я сперва его записываю в файлик, потом оттуда копирую и вставляю в форму два раза. Так и от неправильной раскладки можно защититься. Хотя иногда бывает риск зацепить лишний пробел.

      Кстати, если в password pattern написать русские буквы, они воспринимаются как символы :-)

      Вообще библиотечка нужная, спасибо!
      • +2
        Встречал и такое, что не все дают возможность вставить пароль из буфера.
      • +2
        жму «сгенерировать», tab — пароль исчезает. так и задумано?
        • +6
          Не задумано, спасибо. У меня пока не повторилосьНашёл, почему, исправим.
        • +3
          Ещё (IMHO) было бы полезно в форме логина (или хинтом к полю пароля) отображать требования к паролю — «наш пароль требует синимум 6 символов, минимум одну цифру ...» — очень бы помогло когда надо вспомнить какой из паролей был вбит на этом сайте. Нет, я знаю про техники задания паролей «имясайта + чего-то-там», но не уверен что они широко распространены.
          • +4
            IMHO было бы полезно избавиться от такой херни как «ваш пароль на нашем сайте должен содержать минимум одну цифру, две запятых и китайский иероглиф» — пользователи сами должны заботиться о своей безопастности, потому что достаточно сложнный пароль может быть и без цифр и заглавных букв k@n!lob&fby%#bjy**e()$.
            • 0
              категорически согласен
          • +2
            На нашем проекте мы только проверяем пароль на несколько запрещенных вариаций (123456, кверти и еще пара) и чтобы он не был короче шести символов. А всё остальное на совести пользователя.
            • +2
              Шесть символов я считаю единственным возможным ограничением. Остальные ограничения вообще бредовые, причём их ставят там, где они вообще не нужны. Взять, например, какую нибудь платёжную систему, допустим Яндекс деньги (Webmoney рассматривать не буду, так как там ещё ключи необходимы, пароль не такую авжную роль играет), так там всем по барабану, какой стоит пароль, хотя идёт работа с деньгами, если мне важен мой кошелёк, то и пароль будет соответствующий, я сам введу такой, какой мне необходим, без всяких ограничений. А на каком-нибудь сайте, на который я захожу, чтобы скачать какой-нибудь файлик, я проведу больше времени, пока я буду придумывать пароль, нежели просматривать сам сайт. Обычно с таких сайтов я ухожу сразу и ищу другие сайты, где я могу скачать нужный мне файл. На сайтах, где требуется регистрация, но где я появляюсь на 1 раз, я использую самый простой пароль, типа 123456, так как мне всё равно, что будет дальше с моим аккаунтом. Особенно убивает требование, ввести какой-то спец. символ, типа @, я через 10 минут уже забуду такой пароль, а когда вернусь на этот сайт, буду вспоминать, восстанавливать и потеряю своё время. А за плагин респект.
              • 0
                Скажите, а чем вам не нравится такой 5-ти символьный пароль: %Q9/n?
                Или, того лучше, если условия позволяют: ё♥F5)?
                • 0
                  по хорошему, в большинстве мест нужен лишь вход по OpenID, вовсе без собственного пароля
              • +5
                Плагин полезный, пара предложений:

                1. При уходе фокуса с поля ввода пароля — маскировать его.

                2. При переключении режима маскирования исчезает сам контрол переключения (иконка трех точек или abc) — поэтому приходится подвигать мышкой или кликнуть лишний раз для обратного переключения (Ubuntu chromium 25.0.1364.97)

                3. Криво отрисовывается подсказка, но заскриншотить нет возможности, т.к. окно видимо отлавливает нажатие принтскрина и перерисовывает нормально. Воспроизвести можно так: Открыть дему — назать клавиши 123 — дождаться всплытия подсказки — кликнуть на значок abc = подсказка отрисуется в левом верхнем углу страницы и криво. (Ubuntu chromium 25.0.1364.97)
                • +1
                  Про маскирование при уходе фокуса с поля дельное предложение, спасибо.
                  Протестируем в Ubuntu получше.
                  • 0
                    извините что не по теме — а действительно такая большая разница в яваскрипте для линукс и для виндовс? я как то раньше особо и не заморачивался такой масштабной проверкой под одинаковыми браузерами в разных ОС…
                    • 0
                      В js — никакой (не должно быть никакой, если браузер грамотно собран, но в них багофич тоже никто не отменял). Есть разница в шрифтах, в других настройках (например, размер чекбокса). Поэтому иногда открываешь сайт в другой os — а весь дизайн поехал.
                      • 0
                        по шрифтам по идее должны помочь моношрифты? они всюду просто обязаны выглядеть одинаково. а вот про базовые настройки вида тех же чекбоксов я не подумал.
                        • 0
                          Если вы именно про этот случай, тут не знаю, в чём дело (может, в шрифтах, может где-то в другом месте, проще сесть и проверить на живом браузере). Я вам там в личку ради интереса прислал ссылку на найденный баг сафари под макосью, вот тут скорее всего тоже не учтена какая-то особенность. Моноширинные шрифты будут выглядеть всё равно не совсем одинаково: сам шрифт может получиться более светлым или из-за настроек антиалиасинга неприятным, поэтому тоже полагаться нельзя, лучше проверить.
                • +1
                  Очень хотелось бы (на всех сайтах!), чтобы при недостаточно сложном пароле показывалось только предупреждение об этом, а возможность зарегистрироваться была. Удобно было бы иметь для всех «одноразовых» сайтов простейший пароль типа qwerty, но увы — не получается из-за такого запрета. Ну а обязательное требование цифр (например) не мешает пользователю при желании поставить пароль qwerty1, а общую безопасность пароля уменьшает (хоть и ненамного): без этого было бы неизвестно, есть в конкретном пароле цифры или нет.
                  • +1
                    для одноразовых сайтов нужно использовать менеджер паролей + одноразовую почту — и нет проблем.
                  • +1
                    Идея хорошая, но чуток критики:

                    Ввел русские буквы, говорит password must contain letters.
                    Честно говоря, никогда бы не догадался, что делают иконки «отобразить» «случайный». (я понимаю, что там есть всплывающие подсказки, но все же)
                    Постепенно выдавать пользователю требования из серии сначала буквы, потом большие буквы, потом цифры — это тоже издевательство. (ну и с точки зрения надежности плохо, так как все будут следовать этим правилам последовательно). Лично мне больше нравится, когда появляется список правил и по мере ввода ставятся галочки, так сразу понятно, что надо.
                    • 0
                      Спасибо, подумаем. Там список правил на самом деле и генерируется, но выводится пока только одно. Попробую придумать, как показать сразу все.
                      Про русские буквы уже выше написали — там на самом деле это конфигурируется, я даже в доке написал, почему буквы — не буквы. Но наверное, получилось не совсем интуитивно понятно. Подумаю, скорее всего переделаю, чтобы по умолчанию буквы брались из разных алфавитов.
                      Я тоже сомневаюсь насчёт иконки «отобразить». Что бы вы предлолжили? «Глаз», как в IE, мне вообще не понравилось.
                      • 0
                        Пиктограмма должна быть такой, чтобы при взгляде на неё было понятно, для чего она предназначена.
                        По моему мнению «глаз» наиболее подходящая кандидатура на эту роль, но уж никак не троеточие.
                        • 0
                          К нормальным глазам претензий не имею :). Этот «глаз» в размере нескольких пикселей у меня ассоциируется с wifi-точкой, антенной, чем угодно, но только не с глазом. Сама идея изобразить там глаз мне нравится, но исполнение M$ нет.
                        • 0
                          Как 1 из вариантов — можно преобразовать инпут в выпадающее меню, особнно если сайт дружит с бутстрапом, а в выпадалочке написать текстом
                      • +2
                        Длинный пароль наезжает на кнопки, а так здорово!
                        • +3
                          Единственное что не понимаю, почему такой пароль система тоже считает «слабым».

                          image

                          По мне так нужно отключать эту ошибку, если пароль длиннее, допустим, 16 символов.
                          • 0
                            Согласен, логично было бы плюсовую длину тоже учитывать (сейчас всё что больше 100%, берётся равным 100%). Сделаю поддержку.
                            • +12
                              knjndjnjknsdasfergwjfedq — слабый.

                              Хочется убивать за:
                              1. подобные, типа слабые пароли
                              2. в пароле должен быть спецсимвол
                              3. в пароле не должно быть спецсимволов
                              4. в пароле должна-не должна быть цифра
                              5. буквы русские -не русские и Прочий бред, который вы старательно поддержали!

                              Вот вы все вебмастера издеваетесь над нами да??? И пароль это такое место особо жестокого цинизма над пользователем?
                              • +2
                                Есть спрос — есть предложение. Я облегчил себе жизнь и сделал возможность гибкой конфигурации, чтобы быстро настроить под любые вкусы, потому что мне надоело делать это в каждом втором проекте. Кто и как это будет использовать — дело менеджеров и продукт оунеров, бывает, что их не переубедишь. Длина больше чем задумано и русские буквы — косяк в логике, да, мне справедливо подсказали, что это неправильно, за что я благодарен и исправлю.
                                Уран можно использовать для электростанции, а можно для атомной бомбы, и в этом не виноват инженер.
                                • –3
                                  Т.е. Вы понимаете что это бред, но реализовали его чтобы облегчить реализацию бреда окружающими?
                                  Почему Вам с одной строны не насрать на тупых менеджеров и «продукт оунеров», и с другой стороны, получается, насрать на пользователей? Что за детский лепет?
                                  • +2
                                    Потому что если менеджер скажет — оно всё равно будет, но будет выполнено более быстрым (следовательно, более раздражающим) способом.
                                    • –8
                                      Быдлоплагин для быдлокодеров?
                                      • +1
                                        Тут дело в политических взглядах. Я не революционер. Я выбираю синюю таблетку. Мне классно жить в этом мире и я хочу автоматизировать рутинную задачу. Старался сделать это настолько дружественным, насколько это возможно с известными ограничениями (получилось или нет, не мне судить, но я его пока что использую в трёх проектах, поэтому считаю его полезным). Я не понимаю, какое быдло вы имеете в виду. То, которое орёт на митингах? Дальнейшая дискуссия, вероятно, скатится в политику, поэтому я не отвечу.
                                        • –1
                                          С каких это пор требование наличия символа в ВЕРХНЕМ регистре в пароле — стало стандартом, а отсутствие дебильных требованией — революцией?
                                          • +1
                                            По делу и без оскорблений — это хорошо.
                                            Из дефолта капс уберу, оставим опцией, и правда ему нечего там делать. Поддержку вообще не выкину, потому что бывает, что требуют, чтобы было так — сам дефолт сделаем менее назойливым.
                                            Революцией я называю перевоспитание, нежелание делать поддержку чего-то «из принципа» и так далее. Ваши слова, особенно учитывая ваш последний оскорбительный комментарий, я воспринял как предложение в ответ на ТЗ сказать: «а вот не надо делать так, я не буду это реализовывать». Поэтому я усмотрел тут революционные взгляды. Возможно, был не прав.
                                            • 0
                                              Т.е. если Вам «сверху» скажут написать «возможность» для накручивания голосов в какой-нибудь там, например, избирательной системе, то Вы молча её напишете («а то вдруг революционером назовут»)? Мне Вас жаль.

                                              Эк у нас хорошо массмедиа работают — любые здравые предложения «снизу» уже некоторыми по дефолту считаются революцией.
                                              • +1
                                                Добро пожаловать в суровую Российскую реальность…
                                                • 0
                                                  При чем тут это? Зачем так перегинать палку? Если один разработчик не согласится маску паролю делать, по соображениям бредовости/не бредовости маски — найдут такого, который сделает. Можно попробовать объяснить, что такая маска бредова, но если заказчик/менеджер упорно стоят на своем?
                                                  • 0
                                                    Если Вы не согласитесь писать «возможность для накручивания голосов», тоже найдётся кто-нибудь другой. И? Это будет поводом написать её самостоятельно?

                                                    Если заказчик/менеджер вопреки всем разумным доводам упорно стоят на своём, значит Вы плохо объясняете или они совсем идиоты. Если второе — можно очень легко задавить количеством, вряд ли все вокруг будут такие же идиоты. Если вокруг все тоже идиоты, то… что Вы там вообще делаете?

                                                    Ну и из своего опыта могу сказать, что у меня никогда не было проблем с обоснованием бредовости некоторых идей заказчиков и «менеджеров». Да, порой приходится объяснять не по одному разу. Да, у большинства — комплекс вахтёра и паранойя. Да, бывают очень «важные» и «деловые» люди, и ещё у них есть «понимающие знакомые». Но мне, например, почему-то всё это никогда не мешало, главное — не стесняться.
                                  • НЛО прилетело и опубликовало эту надпись здесь
                              • 0
                                Хм. Спасибо, интересная штука.
                                Но вообще среди моих знакоміх те, кто пользуют паролехранилки типа KeePassX'а пароли обычно генерят сразу в них.
                                • 0
                                  Тоже так делаю. Дело в том, что, например, в моём банке пароль может быть не длиннее (омг) 16 символов и содержать обязательно буквы-цифры (а другое вот нельзя). Мне не очень хочется тыкать кнопки, переключая режим в генераторе моей хранилки: удобнее было бы попросить сайт самому сделать то, что ему хочется получить.
                                  • 0
                                    У меня тоже самое — все пароли — бредятина вроде «QBX-GKTch+@gNbw<2w1sxG5(]?IW&x]gn93]nFVe», которую я даже не вижу во время генерации/копипасты на сайт при регистрации/входа, кроме одного сервиса, который тоже воспринимает только длину сильно короче всех остальных сервисов
                                • –2
                                  Я просто требую email, и высылаю достаточно криптостойкий пароль на него. Потом юзер с ним входит и может уже поменять на свое усмотрение.
                                  • +1
                                    Вы придумали другую сложность для пользователя, просто зашли с другой стороны. Возможно этим, вы облегчили себе (как «разработчику») жизнь или упростили форму регистрации сделав её более привлекательной на первый взгляд, но…

                                    Это плохой способ потому, что:
                                    • Это непривычный сценарий;
                                    • Никто не ожидает увидеть в почте пароль, да ещё и открытым текстом;
                                    • Не всегда есть возможность его скопировать для первого входа или это вызовет определённые сложности, что бы потом поменять;
                                    • Не сработает паролехранилка/паролегенерилка, которые не редко используют;
                                    • Многим не нравится когда за них решают и придумывают, тем более в таких вопросах (может у пользователя свой, достаточно хороший генератор паролей в голове, например с использованием правил составления пароля с использованием имени сайта и т. п.).


                                    Почему вы вообще посчитали, что заходить по придуманному роботом паролю проще, чем придумать его привычным способом? У меня, к примеру, на придумывание сложного, уникального под каждое приложение или сайт, пароля, часто уходит не более 30 секунд.

                                    Можно было бы придумать пару более удобных способов:
                                    1. Можно сразу же в форме ввода email показать и автоматически сгенерённый пароль, с возможностью ручного изменения/копирования/переписывания в блокнот/запоминания в голове или с помощью паролехранилок;
                                    2. В вашем случае можно было хотя бы высылать ссылку на автоматическую авторизацию, которая бы работала до смены пароля (только обязательно после такой автоматической авторизации, скрыть из адресной строки параметры этой ссылки).
                                    • –1
                                      … высылаю достаточно криптостойкий пароль… Потом юзер с ним входит и может уже поменять на свое усмотрение.

                                      А потом пользователь может установить себе не криптостойкий пароль?

                                      Криптостойкость можно улучшать программными общеизвестными средствами (к примеру — использование соли), и не нужно, при этом, заставлять пользователя придумывать сверхсложные пароли.
                                      • +2
                                        Соль от брутфорса не лечит.
                                        • 0
                                          Согласен. Но только в случае получения доступа к таблицам с солью. И это я всего лишь один пример привёл, в скобочках, который не является панацеей. В любом случае нужно поддерживать множество различных техник. А я, своим комментарием, только хотел поинтересоваться, зачем выдумывать временный криптостойкий пароль, если потом пользователь его сменит.
                                          • 0
                                            Если вы по какой-либо причине храните соль отдельно от пароля — у вас что-то пошло не так.
                                            • 0
                                              Не, не… пароль и соль рядышком конечно. Брутфорс ведь может проводится и без факта кражи БД или получения доступа к таблицам с паролями и солью. К примеру атака на внешние сервисы/API приложения. А для последних, просто даже добавление соли к хешам паролей уже является хорошим лекарством. Поэтому и решил уточнить.
                                              • +1
                                                На внешнюю атаку («атака на API») факт наличия/отсутствия соли не влияет совсем, т.к. в таком случае вы работаете не с радужными таблицами хешей, а с оригинальными паролями.

                                                Посмотрите в сторону долгоиграющих алгоритмов с автоматической генерацией соли. Минус радужные таблицы (соль и различные вариации количества итераций), минус брутфорс как таковой (долгоиграющий алгоритм). Дайте злоумышленнику поиграть в более изощрённые игры :)
                                                • 0
                                                  Спасибо! Хороший вариант.
                                          • 0
                                            Зато время работы алгоритма лечит. Вообще, изначально надо понимать, какую именно атаку будут проводить — на конкретный аккаунт или на угон пачки аккаунтов. И уже исходя из этого думать, стоит ли усложнять жизнь конечному пользователю.

                                            В любом случае, пути два — ввод пароля пользователем при регистрации или отправка на почту ссылку на форму задания пароля. Слать какие бы то ни было пароли куда-либо — неправильно.
                                    • +3
                                      Лично меня бесит, когда вижу условие типа «пароль должен с цифрами» — делаю цифру, получаю другое условие — «пароль должен быть длинным», делаю длинным — ещё что-то вылазит, и конца краю этому не видно. Хочу, чтобы мне все условия выдавались сразу. При этом, в нём было бы здорово выделять те из них, которые ещё не выполнены, и приглушать те, которые уже меня не касаются.
                                      • +1
                                        Выше уже отметили этот момент :) фича в планах, появится.
                                        • +1
                                          А я хочу, чтобы сервис правильно работал с хешированием паролей и, как следствие, выдавал мне всего лишь одно сообщение — «Ваш пароль будет ещё прекрасней, если увеличить его длину до 6 символов и добавить в него цифры или небуквенные сифволы» (это в случае, если в моём пароле только буквы). Подчеркну — «или».
                                        • +2
                                          Возможно, кому-нибудь в данной ветке пригодится — zxcvbn, named after a crappy password, is a JavaScript password strength estimation library.
                                          • 0
                                            А почему нельзя иконки позиционировать относительно родительских input элеметнов? При абсолютном позиционировании их положение зависит от параметров родительских элементов, которые не всегда возможно изменить.
                                            • 0
                                              Непосредственно input не может содержать в себе что-либо по спецификации. Если положить их рядом с инпутами и позиционировать относительно них (или inline-block, или relative), есть проблема с тем, что содержащий элемент должен иметь ширину самого инпута + этих элементов, что не всегда приемлемо. Кроме того, некоторые плагины (например, jQuery.Validate) лезут в html и принудительно добавляют свои элементы прямо за инпутом, из-за этого тоже возникают сложности.
                                              От параметров родительских элементов позиционирование не особо зависит (понятное дело, что смещение считается с первого не-static элемента): работает как с fixed, так и с absolute-позиционированными элементами в разных комбинациях, там даже есть тест на это.
                                            • 0
                                              Спрошу, может быть вы знаете, почему бывает ограничение на длину пароля СВЕРХУ? Т.е. почему пароль должен быть не более 20 букв, например?

                                              У меня почти все пароли — это длинные фразы, и я постоянно упираюсь в ограничения на длину (про требования цифры-спецсимволы вообще молчу).
                                              • +1
                                                Привет, ICQ! :)
                                                Такое бывает в двух случаях:
                                                1. Пароли хранятся в открытом (реже — зашифрованном, но не хэшированном) виде. Тогда ограничение длины, скорее всего, из-за формата хранения (примитивный случай — в MySQL длина строки в соотв. поле ограничена 20 символами).
                                                2. Админы или программисты — просто идиоты. Хотя это и к первому случаю относится…
                                                • 0
                                                  Спасибо :)
                                                  Правда, вроде бы такое ограничение есть у пароля толи на e-bay, толи в paypal, толи в applestore. Надеюсь, там все же не идиоты работают…
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                • +1
                                                  Так точно так же описано и реализовано автором статьи в его библиотеке.?
                                                • 0
                                                  Сложность пароля можно оценивать по количеству вариантов для брутфорса по обычным маскам (перебор по словарю не рассматриваем). Например, пароль из 15 букв одного регистра в этом смысле примерно соответствует 12 символам из букв обоих регистров и цифр (26 ^ 15 ~ 62 ^ 12). Хотя этот метод и не панацея — придется учитывать много шаблонов. Скажем, 6 строчных букв и 3 цифры (abcdef793) это в 300 раз хуже 9 буквоцифр (ab7c9def3).

                                                  Тогда подсказка может содержать не конкретные требования («Нужна заглавная буква!»), а набор рекомендаций («Пароль слабый! Добавьте еще символов, или заглавные буквы, или спец. символы»).

                                                  Психологически неплохо действует рейтинг в виде количества условных секунд (часов, лет, и т. д.), необходимых для взлома пароля. Где-то такое видел.
                                                  • 0
                                                    А теперь просто примените долгоиграющий алгоритм хеширования и перенесите ответственность с плеч пользователя на свои плечи. Регистронезависимая комбинация из 4 латинских буквоцифр — это 1.5 млн вариантов, брутфорс в среднем за 750 тысяч итераций. Достаточно иметь алгоритм, отрабатывающий 0.3-0.5 секунды, чтобы заставлять брутфорсить один пароль в среднем за 60-100 часов. Напомню, мы говорим о пароле в 4 символа. Аналогичный пароль длиной в 6 символов будет в среднем брутфорситься примерно за 3000-5000 дней.

                                                    Конечно, можно применить более массивные вычислительные ресурсы — кластеры или гриды — и скорость увеличится в сотни и тысячи раз. Но достаточно трезво посмотреть на свои сервисы и на то, кто и зачем их будет взламывать. В абсолютном большинстве случаев требование таких паролей — необоснованная паранойя.
                                                  • +2

                                                    Мультиязычная подсказка…
                                                    • +1
                                                      По-моему, самый крутой способ, показать криптоскойкий ли пароль, это не писать «плохо»-«хорошо», а позволить пользователю самому оценить, насколько легко будет взломать его аккаунт.



                                                      Голые женщины, конечно, классные, но подозреваю, что так действеннее)
                                                      • +2
                                                        Для большинства пользователей эта надпись будет интерпретироваться как «вас взломают через 13 дней». Т.е. если для меня надпись, что взломают за год, говорит о том, что пароль нормальный (ну кому я нужен, чтобы год тратить вычислительные ресурсы на мой пароль), то для моей мамы это значит, что ровно через год её взломают.
                                                        • 0
                                                          Можно спастись другими постановками фразы «Can be cracked in 13 days», а когда пароль сильный, можно обойтись чем-то вроде «This password is difficult to crack»
                                                      • +1
                                                        Интересный плагин, спасибо, попробую попользоваться.

                                                        Если в форме регистрации есть второе поле с паролем для проверки — можно ли сделать так, чтобы при генерации пароля второе поле автоматически тоже заполнялось?

                                                        Кстати, тот плагин simplePassMeter (который с «more»), зря вы сразу его отсеяли, очень даже неплохой. У него есть пару интересных фишек — проверки matchField (указываем поле с pass2, чтобы оба введённых пароля совпадали) и noMatchField (указываем поле с логином, чтобы не совпадали). Самый большой недостаток — плохая модульность, сложно переводить и ещё сложнее сделать его мультиязычным.
                                                        • 0
                                                          Спасибо, с логином будет полезно, добавил настройку и проверку.
                                                          Про второе поле при генерации — не думаю, что правильной будет его установка в ответственности этого модуля, поэтому добавил события, теперь можно подписаться на generated и записать его во второе поле.
                                                          • 0
                                                            Вот, то что надо! Спасибо! Тоже думал про события…
                                                        • 0
                                                          Разработал и описал тут. Генератор пароля, с возможностью видеть пароль под звездочками.
                                                          habrahabr.ru/sandbox/59323/
                                                          • 0
                                                            Если ограничиться только современными браузерами, будет работать. У меня type изменяется только в случае если браузер поддерживает эту фичу, в остальных случаях будет fallback. В jquery это кстати был не баг, а фича такая :) помню, где-то даже было написано, что т.к. не все это умеют, то пусть и мы тоже будем падать (если конечно не путаю с другим свойством).
                                                          • 0
                                                            Использую на новом проекте. Очень доволен, хотя конечно не хватает немного некоторых визуальных опций.
                                                            • +1
                                                              Про подсказку.

                                                              Во-первых, не согласен, что ее надо прятать. Много причин почему может потеряться фокус на самом деле. От автозаполнения форм до срочно нужно сделать музыку потише. Вообще показывать сразу все ошибки гуд, всегда видно масштаб трагедии и еще до фокуса понятно что и где исправить.

                                                              Во-вторых, сама подсказка неимоверно длинная. Прям до жести. Можно ведь отжать:

                                                              Было:
                                                              Пароль слабый, в пароле должны быть буквы. Пароль слишком короткий (мин. длина): 8. Чтобы сгенерировать пароль нажмите [ico]

                                                              Стало:
                                                              Минимальная длина — 8 символов
                                                              Должны быть буквы
                                                              [ico] — генерация пароля.

                                                              Намного проще воспринимается.
                                                              • +1
                                                                Да уж, длинно получилось, и правда выглядит пугающе; надо будет сократить, спасибо.

                                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                              Самое читаемое