Русские пароли в Safari/Mac OS X

    Сегодня столкнулся с такой проблемой: нужно ввести пароль, содержащий русские символы. Но не тут-то было. Safari просто отказалась переключать язык! Простым решением было бы ввести пароль в TextEdit и скопипастить его в поле для ввода пароля, но организм требовал более элегантного решения проблемы. И вот, вспомнив приемы CSS-джитсу и Javascript-фу, превозмогая пятничное стремление пойти напиться или пройти наконец Braid, ваш покорный слуга ринулся в бой...


    Решение оказалось на удивление простым, но путь к нему был довольно долгим. Первым и самым очевидным шагом было заменить все поля с типом password на поля с типом text. Но вот как вводимый пользователем текст обратно спрятать? Первым пробным решением было сделать текст прозрачным: color: rgba(0,0,0,0). Но в этом случае пользователь просто не видел сколько символов он ввел, и пустое ли поле вообще. Короче говоря, после долгих поисков на Surfin' Safari я набрел на замечательное CSS-свойство: -webkit-text-security! Данное свойство заставляет любую Safari начиная с третей версии показывать вместо текста диски (-webkit-text-security: disk), кружки (-webkit-text-security: circle) или квадратики (-webkit-text-security: square). В результате имеем следующую javascript-функцию:

    function() {
    	var F = document.forms;
    	for(var j=0; j<F.length; ++j) {
    		var f = F[j];
    		for (var i=0; i<f.length; ++i) {
    			if (f[i].type.toLowerCase() == "password") {
    				var el = f[i];
    				el.type = "text";
    				el.style.cssText = "-webkit-text-security: disc";
    			}
    		}
    	}
    }


    А вот букмарк, который следует перетащить в панель закладок и пользоваться, я (по понятным причинам) здесь разместить не могу. Поэтому приведу лишь его код:

    javascript:(function(){var F=document.forms;for(var j=0;j<F.length;++j){var f=F[j];for(var i=0;i<f.length;++i){if(f[i].type.toLowerCase()=="password"){var el=f[i];el.type="text";el.style.cssText="-webkit-text-security:disc";}}}})();

    Пользуйтесь на здоровье. ;-)

    p.s. Если кто-то знает, как искоренить эту проблемы кардинально, я буду рад выслушать и снести этот пост нафиг. Судя по всему корень проблемы скрыт в недрах самой операционки, т.к. подобным образом себя ведут все поля паролей в Mac OS X (у меня 10.5.7).
    Share post

    Comments 47

      +1
      Если кто-то знает, как искоренить эту проблемы кардинально, я буду рад выслушать и снести этот пост нафиг.

      Не надо использовать русские символы в паролях :). Да, в макоси все пароли вводятся всегда в одной раскладке: английской. И это замечательно и очень удобно.
        +5
        Тану. Юникод на дворе. Пора б уже и убрать это дело.
        Кстате в ЖЖ некоторое время был глюк: если пытаться написать комментарий не залогинившись.
        Вводишь логин. Потом пароль. Потом жмешь таб что бы переключится в текстовое поле для ввода комментария и все. переключится на русский нельзя.
        Потом пропало както.
          +2
          Вы не понимаете… Дело в том, что это было сделано намеренно! :). Чтобы люди не путались, в какой раскладке вводить пароль, чтобы он всегда был в английской раскладке. Меня лично это очень бесило под Windows, что в окошке ввода пароля при входе в систему надо всё время переключать раскладку, т.к. по умолчанию у меня почему-то ставилась русская.
            +1
            По-моему это лично моё дело в какой раскладке пароли для себя лично придумывать. Не соглашусь с Вами, что «Не надо использовать русские символы в паролях».
              +1
              Конечно, это личное дело. Лучше бы это настраивалось.
                +1
                На самом деле, у русских букв в паролях есть много недостатков, в том числе, кстати, и потенциальные проблемы с кодировками символов (пока что всё же не везде юникод используется, к сожалению).

                Да, это ограничение свободы, но ИМХО это только во благо :). Ну, и, в конце концов, никто Вас не принуждает пользоваться макосью вообще (похоже, Вы ей и не пользуетесь, собственно :))
                  +3
                  «Ограничение свободы во благо» — вот так мы раньше и жили… :)
                  +1
                  На практике эта тема с паролями в принудительно англ. раскладке потрясающе удобна.
                    0
                    … если нет паролей в русской раскладке ;) А пароли ведь бывают не только мои личные, которые и так все на англ., но и чьи-то еще, которые мне сообщали, а среди неискушенных в IT пользователей очень многие используют русскоязычные пароли.
                • UFO just landed and posted this here
                    –1
                    зачем придумывать что-то, если об этом в каждом интернете написано еще со времен win2k? то что youROCK об этом не знал, еще не говорит о том что это тайна покрытая мраком.
                    • UFO just landed and posted this here
                    0
                    Ага, мне вот щас пароль для киент-банка выдали русский, пришлось грузится в вируталку с XP.
                    Никуда не годится такое «удобство».
                      0
                      Ну, copy-paste вроде как работает и позволяет вставить русский пароль в это поле. А во всех остальных случаях вводить пароль намного удобнее, ИМХО.
                        0
                        Не работает :(
                          0
                          Ну у меня в фаерфокс вставило :)… А вообще, русские пароли лично я никогда не юзал, и с банками, которые выдают русские пароли, тоже не работал :). Так что, наверное, у меня всё впереди
                    0
                    Ну не знаю, я был бы готов пожертвовать некоторой безопасностью в пользу удобства и в виндовсе (чтобы не путаться в раскладках при вводе пароля).
                    +1
                    У меня жена очень любит в качестве паролей использовать обрывки пословиц и песен… Вчера она наконец-то доклеила на свой Macbook русские буковки, и столкнулась с такой проблемой. А моей жене бесполезно объяснять, как замечательно и удобно всё в OS X. На всё один ответ: «А вот в у меня в Windows было можно...»
                      –2
                      Ну, Вы можете ей объяснить, что так делать нехорошо, и пусть переделает свои пароли, чтобы они вводились английскими буквами :). К тому же, в качестве паролей ни в коем случае нельзя использовать словарные слова.
                        0
                        Там целая система. Рифмование домена, цветовые ассоциации… Жуть короче. Насилу уговорил её разбавлять это дело цифрами из даты своего рождения.
                          0
                          Ну пересадите её на Firefox, в котором можете поставить расширение Web Developer, которое может конвертировать формы ввода паролей в обычные текстовые «одним нажатием кнопки» :).
                            0
                            Эээ… Собственно этим мой скриптик и занимается…
                              0
                              А, извините, невнимательно прочитал, как пользоваться Вашей штуковиной :). Был неправ.
                            0
                            На самом деле неплохие пароли получаются если писать как если клавиатура в русской typewriter раскладке, а на самом деле поставленна английская. Легко запомнить плюс не словарные слова (:
                              0
                              Это Вам кажется, что они не словарные :). А ведь на самом деле простые преобразования словарных слов, вроде смены раскладки слова, вполне возможно тоже включаются умными хакерами в словарь…
                                0
                                Ключевое слово «умными» (:
                                  0
                                  Глупых хакеров не бывает))) Точнее бывают но их по-другому уже называют )
                                    0
                                    Ну в наше время если «хакер» значит уже глупый. Умный хакер нынче называется «эксперт по сетевой безопасности» :D
                                0
                                самое забавное настает когда под рукой не оказывается клавиатуры с наклеенными русскими буквами :)
                                  0
                                  Ну, к тому времени уже мышечная память должна срабатывать (:
                                0
                                что мешает печатать на ангельской раскладке? у меня в качестве пароля часто первые буквы слов из стихов + цифры, но приэтом, что бы я бзал русский язык в пароле??? да вы там все ******** (С)
                                  0
                                  что мешает печатать на ангельской раскладке?

                                  Ничего не мешает
                                  что бы я бзал русский язык в пароле??? да вы там все ******** (С)

                                  Тут не в том дело юзать или не юзать, я тоже не использую русские буквы в паролях, но я допускаю возможность использования русских или других символов в нём, потому что это, имхо, дело каждого.
                          +3
                          макось, в отличие от конкурирующих блогов систем, содержит совершенно мистические и необъяснимые баги. переключение языка ввода отказывается работать в некоторых полях ввода. в снежке обещают пофиксить.
                            0
                            Ну, в поле ввода пароля оно и не должно давать переключаться :). А в остальном, простите, не замечал как-то. Не приведете пример?
                              +2
                              оно и не должно
                              Почему не должно, кто это решил? Или так правильно, потому что так сделала apple?
                                –3
                                Так сделала Apple и я тоже считаю это более правильным, чем то, как это сделано под Windows :).
                                  +3
                                  Т.е. вы считаете это правильным, даже не смотря на то, что в мире полно других систем, кроме MacOS X, в которых тоже приходиться иногда логиниться пользователям MacOS X и которые не придерживаются этого правила?
                                    –3
                                    Ну, в поле ввода пароля оно и не должно давать переключаться :).

                                    Я имел ввиду, что в макоси оно и не должно переключаться, т.е. это стандартное поведение (т.е. «не баг, а фича» :))

                                    Т.е. вы считаете это правильным, даже не смотря на то, что в мире полно других систем, кроме MacOS X, в которых тоже приходиться иногда логиниться пользователям MacOS X и которые не придерживаются этого правила?

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

                                  а вот поведение, которое вы описали в посте является, как ни странно, штатным. но от этого не менее мистическим.
                                    +1
                                    Хм, таких симптомов я у себя не наблюдал, если честно… Я помню, у меня были достаточно серьёзные глюки, когда я использовал RuSwitcher, но я его удалил (кстати говоря, сейчас вышел Punto Switcher под мак, вот только он немного тормозит :))
                                +5
                                Ваще бред полный, имхо, в пароле могут содержаться любые символы и это право пользователя, какой у него пароль. Хоть Alt+0173, хоть любой юникод. Дело функции логина, взять хэш и сравнить. Я хочу иметь право самому выбирать свой пароль.
                                  –4
                                  Пароли на русском? Да еще на макоси? Да еще с бубном?
                                  Фак мой моск.
                                    0
                                    А я столкнулся с проблемой ввода русского пароля в Adium. Причём из буфера вставляться он на отрез отказывался.
                                      +1
                                      Те, кто ратует за пароли на не-латинице, видимо никогда не попадали на системы где установлена _только_ латиница и нет возможности изменить.
                                        0
                                        Java-джитсу — очень круто звучит!
                                          0
                                          Извините за занудство, на все таки лучше было бы сделать:
                                          el.style.WebkitTextSecurity = «disc»;

                                          чтобы случайно не «забить» оригинальный style у поля, если такой имеется.
                                          Написал, еще раз взглянул на ваш код и подумал:
                                          function() {
                                          	var input = document.getElementsByTagName('input');
                                          	for(var i = 0, f; f = input[i++];) {
                                          		if (f.type.toLowerCase() == "password") {
                                          			f.type = "text";
                                          			f.style.WebkitTextSecurity = "disc";
                                          		}
                                          	}
                                          }

                                          Поля типа password не обязательно могут быть внутри <form> ну и так, помелочи.

                                          Only users with full accounts can post comments. Log in, please.