логин: 
<< предыдущая заметкаследующая заметка >>
14 августа 2010
Мысли про авторизацию

Давайте я изложу свои рассуждения, а может кто-то что-то умное скажет.

1. Авторизация — способ общаться с друзьями и отсекать вредителей. Проблема авторизации и идентификации — самая муторная и сложная, потому что авторизация всегда и у всех слетает. Нет такого сайта с авторизацией, на котором бы не приходилось время от времени перелогиниваться.

2. В современном интернете единственная возможность идентифицировать пользователя — это данные, которые он сам предъявит. IP могут быть динамическими или корпоративными, строки браузеров однотипны и подделываемы. Единственный способ идентификации — хранить на стороне посетителя нечто вроде пароля.

3. На данный момент нам (мне) известны всего три технологии хранения данных на стороне клиента. Но среди них нет ни одной, которая бы гарантированно работала у любого пользователя — даже куки могут быть отключены по разным причинам. Итак, три метода хранения данных:

а) Куки. Устанавливаются сервером (или Javascript), предъявляются серверу при запросе страницы. Поэтому могут применяться там, где даже отключен Javascript.

б) Macromedia Flash (jog.swf). Устанавливаются и читаются на стороне пользователя через Javascript. Не работают в момент загрузки страницы — требует секунду, пока запустится инициализация от загруженного swf, но эта проблема мизерная. Плюсы: такая авторизация часто единая для всех браузеров клиента — залогинившись в одном, можно получить авторизацию и во всех остальных, что прекрасно.

в) Браузерные хранилища. Устанавливаются и читаются на стороне пользователя через Javascript. Работают только в браузерах последнего поколения.

Если вам известен какой-то еще метод — расскажите. Может, Javascript сумеет своими средствами собрать более уникальную информацию о системе — время установки, ID винчестера, установленные плагины и их номера? Может, JAVA сумеет запуститься тихо и без отжора ресурсов и что-то свое сохранить? Может, сервер на уровне Апача способен что-то узнать, анализируя информацию, какой файл у пользователя уже был закэширован? Не знаю.

4. Соответственно модель идеальной авторизации мне видится следующей:

— В момент запроса страницы сервер пытается прочесть куку (идентификатор посетителя). Если кука была 0 — выдает новый номер. Если куки не было, устанавливает куку = 0. В любом случае отдает страницу, в коде которой кука также присутствует. Дальше действует скрипт на машине клиента.

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

— Если кука в теле страницы не 0, а в остальных хранилищах ничего нет — записать ее во все хранилища (включая куки).

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


Такая модель позволит сохранять авторизацию в большинстве случаев, включая случаи, когда отключен Javascrit, но куки работают. А также наоборот: когда куки почему-то выключены, но Javascript и какое-то из двух других хранилищ работает.

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий
https://panopticlick.eff.org/

Вот нифига браузер не анонимен. Вендузятнеги наставят софта и наловят вирусни, никсоиды самовыебнутся левым софтом и шрифтами.
"Стандартным браузером" обычно пользуется бот. (На моей практике - еще и объявляет себа windows media centre, рекомендую, к иптаблесу, пф-у и ипф-у есть приблуды)

ЗЫ: открыл окно здесь, а в нем текст камента из /dnevnik
Nokia-E90 Safari
 Москва
1
0
Leonid Kaganov
Дело не в анонимности. Браузер и IP не дают возможности ОДНОЗНАЧНО определить пользователя.

Что это значит на практике? Допустим, у меня редкий мобильный браузер с редкими установленными плагинами 1,2,3. ты на своем сайте считаешь меня авторизованным, включаешь мне подзамочный доступ или оставляешь мне личные сообщения на сайте. После этого появляется человек, у которого случайно такой же браузер и те же плагины (при числе посетителей больше 1000 это уже вполне реально), и получает все то, что предназначалось мне.

Другой пример: в банке работает 400 сотрудников, из них 4 ходят на твой сайт: двое твои друзья, один хам и спамер, еще один - их начальник, запрещающий подчиненным ходить на "развлекательные" сайты. У всех четверых один IP и одинаковый браузер однотипной корпоративной Винды. Ваши действия?

Вывод: IP и представления браузеров НЕЛЬЗЯ использовать для авторизации вообще.
Nokia-E90 Safari
0
0
шутку с дефолтным браузером оценил, хотя в промышленной реализации такого явно не будет....
...а насчет анонимности - тут я ошибся с термином, везде этот сайт упоминается именно в контексте паники любителей ее, сбили с толку. Правильнее было бы говорить "идентифицируемость", что есть вещь противоположная.
В приведенном примере с шефом решение простое: дать "ссылку на прикол" и получить паттерн для сравнения.
А вот о "Выводе" я как раз и говорил приблизительно то же самое: представления браузеров нельзя использовать не только для авторизации, но и для идентификации вообще. С той поправкой, что нечто сверхтипичное для как раз идентификации "нежити" использовать можно и нужнои
Nokia-E90 Safari
 Москва
0
0
Leonid Kaganov
Раз мы пришли к согласию, что строку браузера для авторизации использовать нельзя, значит, вопрос в рамках сегодняшней темы снят.
> что значит на практике

значит фронт-морда одного из крупнейших аффтаров решений веб-магазинов. И да, опенсорс без каких либо исключений если что.
Я не хотел рисоваться тем заявлением. Боты валят, хотел поделиться опытом борьбы, вдруг пригодится?

ЗЫ А еще на нативном браузере е90 "ответить" идет крокозябрами
Nokia-E90 Safari
 Москва
0
0
Leonid Kaganov
А в чем опыт? Банить ботов по строке браузера? Это-то понятно.

А откуда вам известно про проблему е90?
А потому что комментарий номер три я из под него и писал. Вот интересно, кто же меня убедил сменить 9300 на е90 в свое время ; ) ...
Nokia-E90 Safari
 Москва
0
0
Leonid Kaganov
Похоже, браузер Е90 не видит кодировку css content(). У меня та же фигня.
А charset у link указывать не пробовали?
Nokia-E90 Safari
 Москва
0
0
Leonid Kaganov
Это как?
&lt;link href='/blog/css/blog.css' rel='stylesheet' type='text/css' charset='windows-1251'/&gt;

Ну и наверное при отдаче CSS не помешает отдавать с
Content-Type: text/css; charset=windows-1251
Интересно, а как ввести угловые скобки?
Nokia-E90 Safari
 Москва
0
0
Leonid Kaganov
В смысле? Там чарсет прописан. Здесь - указан. Где еще? На стороне сервера? Тоже отдает по умолчанию 1251.
Ну а я вижу в исходниках этой страницы на 50-й строке link без атрибута charset. И curl -I http://lleo.aha.ru/blog/css/blog.css сообщает просто о "Content-Type: text/css", без charset.
Windows
0
0
lesha (#406942)
А если вспомнить про список плагинов.. который чуть ли не у всех разный :)
Но... "мы не можем полагаться на случай!" :))
Браузер != юзер
IP != юзер
e-mail != юзер
Думаю, что так как есть сейчас - это лучший выход. Собирать информацию по крупицам и догадываться, какой логин. Потому что не логиниться же по отпечатку пальца. Если уж всё отключено - введут логин-пароль, чего уж там. Кстати, функции выхода из логина на вашем сайте нету.
Windows Opera
 Европа
0
0
Да, выхода нет.
И это очень печально.
Персональные компьютеры коллективного пользования никуда не делись...
Windows
0
0
lesha (#406942)
Наверное это лучше называть "Аутентификация".
Вики - "Аутентификация — проверка принадлежности субъекту доступа предъявленного им идентификатора; подтверждение подлинности.

Аутентификацию не следует путать с идентификацией и авторизацией.

Авторизация - Процесс предоставления определенному лицу прав на выполнение некоторых действий.
"

А по сути - задача то идентифицировать пользователя, а не его компьютер. Я вот с другого зашел. И быстро вспомнить свой пароль не в состоянии :) А куки и т.п остались на другом компе.

Это еще один случай к перечисленным тобой. Для его решения надо что-то внешнее, куда имеет доступ только этот человек. Можно выслать новый пароль на его 1) почту, 2) мобилку (но это много мороки). От своей почты то пароль с большей вероятностью помнят :)

А в остальном все правильно написал. Строка, которую сам сохранил у клиента и есть лучшее доказательство подлинности. Ну еще разве что довериться внешним авторизаторам - openid-ы. Но это если человек сам захочет себя подтвердить.

Все остальное - только косвенное и вероятностное подтверждение человека. Для Аутентификация оно не годится.
Windows Opera
0
0
[email protected] Bryzgalin (constb)
ещё четвёртый способ забыли – хранить идентификатор во всех ссылках на сайте и скрытым полем во всех формах, серверсайд будет всегда получать её либо GET'ом либо POST'ом. и будет работать даже в тех случаях когда у пользователя отключены куки, скрипты и флеш – такое вполне реально.
Nokia-E90 Safari
 Москва
4
0
Leonid Kaganov
Охуительно умный метод. А потом человек отправит ссылку в свой блог и придут 1000 клонов с его идентификатором. А сам он зайдет с титула по ссылке и лишится идентификатора.
Windows Opera
0
0
[email protected] Bryzgalin (constb)
ну на безрыбье... :)

а чтобы не ходили клоны, надо привязывать такой идентификатор ко всему к чему привязывается: к IP, к User-Agent, к Accept-Language, к чему-нибудь ещё. и на титуле отдавать ссылки с идентификатором же. а если пользователь будет жаловаться, мол, работает через жопу, ну так дорогой, кто ж тебя просил отключать всё подряд! :)
Linux Firefox
 Москва
1
0
Как метод - отстой, а как шутка - затянулось.
Windows Opera
0
0
[email protected] (xtmb.info)
Если отключил даже куки - думаю, узнавание будет для юзера как раз таки нежелательным. А вот если оно нужно владельцу дневника, то пусть и делает, как ему больше нравится. Хоть через те же POST запросы.

Ну, а если юзер все поотключал и при этом хочет удобства - ССЗБ.
Linux Firefox
 Москва
0
0
Важный момент: здесь мы не принимаем в расчет желания юзера вообще никак. Возможно, юзер желает срать. Проблема идентификации - это проблема хозяина сервиса, юзеру она, разумеется, также может быть полезна, но удобство юзера здесь на втором месте.
О как. Тогда путем клиент-банков. Для доступа выдавать (продавать) по предъявлению документов удостоверяющих личность USB ключ, пускать только по нему и только по HTTPS. Идентификация приблизится к 100% число пользователей к нулю.
Windows
0
0
lesha (#406942)
Ну так это несколько иная задача. :)

Лучше разделить задачу на две - для тех кто хочет быть узнанным (друзья) и тех кто не хочет (тролли). Так ее легче решить для большего числа людей.
Для первой категории ложные срабатывания вредны. Для второй - можно с точностью 95% узнать что это тот же человек и предупредить админа, не давая при этом доступа к данным профиля.

Подозреваю на самом деле требуется вообще что-то третье. Минимально-достаточное решение.

http://www.opennet.ru/opennews/art.shtml?num=26635
"...При расчете сигнатуры учитываются такие параметры, как полное наименование браузера (User Agent), содержимое заголовка HTTP_ACCEPT, список установленных плагинов, часовой пояс, список поддерживаемых MIME-типов, параметры экрана и список доступных шрифтов. Каждое из вышеперечисленных полей в отдельности может показаться типичным, но их комбинация обладает достаточной степенью уникальности для использования в качестве "сетевого отпечатка пальца". Проверить уникальность своей системы можно через сервис panopticlick.eff.org. ..."

Там перечислены категории пользователей, которые не определяются.
Windows Firefox
1
0
dimmik (#402186)
Леонид,

Вы знаете, есть такая программка. Называется FBReader. Хороша тем, что это читалка под линукс (года три назад у меня была машинка Sharp Zaurus 3000, там как раз линукс).
И у нее автор... Своеобразный.
Года три назад как раз там была такая проблемка - не было закладок. Вот место где ты читал последний файл запоминалось, а закладку нельзя было поставить.
Казалось бы, используй тот же механизм - и всем щясте. Ан нет, на просьбы автор отвечал - "когда придумаю идеальный механизм хранения закладок - тогда и будет". Придумывал два года.
Мне это показалось идиотизмом - юзеру не нужен "идеальный алгоритм", пользователю нужны закладки.

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

А вы изобретаете "идеальный велосипед" с десятком разных вариантов хранения того и сего - и в результате натыкаетесь на сотни грабель, на которые уже натыкались до вас. И пользователи страдают.

Это ваша личная страничка, безусловно, и пользователи - "не хотят, пусть не пользуются" (ну например этот идиотизм с "этот пароль кто-то уже придумал" меня категорически раздражает), но все же.
Windows Safari Chrome
0
0
> на просьбы автор отвечал - "когда придумаю идеальный механизм хранения закладок - тогда и будет". Придумывал два года.

Что придумал-то в итоге? Интересно.
Windows Firefox
0
0
dimmik (#402186)
Глобальный пул закладок, хошь по текущему файлу, хошь по всем остальным.
Windows Safari Chrome
0
0
> Глобальный пул закладок, хошь по текущему файлу, хошь по всем остальным.

А хранит он его где? И как привязывает к файлам?
Если через БД - над чем он думал 2 года?
Nokia-E90 Safari
 Москва
0
0
Leonid Kaganov
Слушайте, да что вы пристали "над чем он думал 2 года". Бесплатно распространяемая, если не ошибаюсь, читалка книг. Вы полагаете, у ее автора 2 года не было больше проблем, только выполнять просьбы хомячков приделать закладки? Полагаю он работал или отдыхал или детей растил. А как пришла идея и свободное время - написал ваши закладки.
Windows Safari Chrome
0
0
Так я к тому и клоню, что автор скорее своими делами занимался, а не "придумывал 2 года идеальный механизм закладок".
Nokia-E90 Safari
 Москва
0
0
Leonid Kaganov
Если вы предапочитаете рассматривать все проблемы с точки зрения хотелки пользователя, то правильный ответ такой: А ЧЕМ ТОГДА ВАС НЕ УСТРАИВАЕТ ВОРДПРЕСС И ЖЖ? ПОЛЬЗУЙТЕСЬ ИМИ!
Windows Firefox
0
0
dimmik (#402186)
Ну я и пользуюсь.
Авторизацией здесь перестал пользоваться с тех пор как у меня слетел логин и заново войти не получилось.
А когда наткнулся на "кто-то уже использует такой пароль", понял что мое мировоззрение категорически отличается от вашего.

Неудобно (для пользователей, да), зато свой личный, вновь изобретенный велосипед.

Ну и ради бога. Для себя же - делайте как знаете.
Nokia-E90 Safari
 Москва
0
0
Leonid Kaganov
Ваша претензия от полного непонимания финансовой модели. Если цель проекта - угодить пользователю (и получить за это с пользователя деньги, рекламные показы и т.п.), то нанимаются программисты и им ставится задача: порвать жопу, но пользователю угодить.

Цель моего проекта - хобби. Мне нравится экспериментировать с технологиями и делать удобства себе (и тем людям, которые используют движок). С посетителей же я не получаю ни денег, ни рекламных показов, поэтому временные неудобства посетителя в мою финансовую модель не вписываются никак.

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

pS: А если идти на поводу у пользователя, то мне тогда и по основной профессии следует писать приключения о супергерое, который спасает мир. Статистика показывает, что широкая масса пользователей хочет читать именно такие книги.
Windows Firefox
0
0
"интересная и перспективная модель" выливается в не очень интересную и не особо перспективную, извините.
Под любую необходимую нужду есть уже готовые, отлаженные и гарантированно работающие технологии. Https, сертификаты, регистрация по приглашениям, герметичная регистрация.
А у вас - изобретение восемнадцатиколесного велосипеда с пищалками и перделками.

Впрочем, это мое личное мнение, да.
Nokia-E90 Safari
 Москва
0
0
Leonid Kaganov
В чем смысл прихода Боддисатвы с юга посрать в мой дневник?
Windows Firefox
0
0
Дискуссия, понятное дело.
Самоцель.
Попробовать, возможно, несколько сместить свою точку зрения - понять, возможно я не прав и действительно вот это вот ("такой пароль уже кто-то выбрал", разлогиниваться с помощью плясок с бубнами, неочевидное поведение сайта) - несет в себе зерно здравого смысла.
Пока у меня это не получается.

Это не означает что этого зерна нет. И не означает что ваши идеи - не лучшие из лучших.
Скорее всего это означает просто что я туп. Вот это я и хочу в рамках дискуссии поправить.
Но пока туго с этим делом.
Linux Opera
0
0
[email protected] (sinker.ru)
А что такое "герметичная регистрация"? Ни яндекс, ни гугл не знают...
Windows Firefox
0
0
Ну, когда владелец лично добавляет юзеров.
Термин мой :)
Windows Firefox
1
1
И да, про посетителей вы лукавите.
С посетителей вы благополучно получаете рейтинг, и, как следствие - приглашения на всякие поездки и пр. с последующим описанием в блоге.
Что-то мне подсказывает что будь вы васей пупкиным с собственным движком (пусть даже и писателем при этом, но без раскрученного блога), пиво амстел вы бы пили за свой счет.

Впрочем, ваше отношение к этим посетителям - тоже ваше личное дело. Я читаю с интересом, проблемы только в авторизации. Ну, значит этот момент я не использую.
Nokia-E90 Safari
 Москва
2
0
Leonid Kaganov
Пиво Амстел я не пил вообще никогда - ни за свой счет, ни за ваш, ни за казенный. А ваше ЧСВ зашкаливает.
Windows Firefox
0
0
(блин, где капча в 255 символов?)
ЧСВ - возможно. Вам виднее.

По поводу пива и счетов - ловко вы меня срезали, да.

Видимо, в Амстердам вы поехали исключительно за свой счет и слова "Спонсор поездки — пиво «Amstel». Тема путешествия звучит так: хорошо бродить по городу с пивом «Amstel»!", с двумя одинаковыми рекламными ссылками на 15 слов - это просто хобби.
Не реклама ни разу и никакого профита от этого вы не имеете.

Притворюсь идиотом. Поверю. Расшкалю ЧСВ.
Linux Firefox
 Москва
0
0
Спорим на 1000$, что пиво "Амстел" мне не заказывало рекламы? Хоть денег заработаю.
Windows Firefox
0
1
Угу, и потом окажется что для выигрыша спора я должен буду предоставить вам оригиналы вашего с Амстелом соглашения, где упоминается слово "реклама". ;)

Ну и тем более - я разве где-то говорил что кто-то вам рекламу заказывал?
Я же наоборот написал - "... - это просто хобби".

Ну и началось все с того, что юзера вам таки нужны - впрочем, если вы дадите честное слово что не будь у вас этого (или какого-нибудь другого) популярного блога, вы бы тем не менее поехали бы (не за свой счет) и в амстердам и на аэс и куда-то еще что-то такое было - я поверю.
Дадите?
Linux Firefox
 Москва
0
0
Пустая демагогия. Вы обвинили меня в том, что из-за вас, читателей, пиво "Амстел" меня на халяву привезло в Амстердам. Я предлагаю пари на 500$: я доказываю, что это ложь, и к этому я непричастен. Если вы будете вынуждены согласиться (при свидетелях), вы перечисляете 15000руб мне на мобильник. Если вам удастся привести аргументы, которые оставят вас при своем мнении - 15000 перечисляю вам я.

Если согласны - заключаем пари. Если нет - прекращаем вообще разговор. Никакие дальнейшие обсуждения и выяснения с этого момента невозможны: или да или нет.
Linux Opera
0
0
bubbo (#413171)
Путин допустим. Носит часы Патек Филлип. В чем сам удостоверился. Сколько же ему платит эта швейцарская контора? Ездит на Мерсах, ну и сколько же немцы ему за это отвалили?
Что есть реклама? пейте пиво Амстел самое пенное охуенное. Я такого не нашел определения. Только констатация фактов.
Может это просто зависть. И я завидую. Хочу что бы меня приглашали на разные вечеринки, да еще и на халяву. (На самом деле приглашают, но не часто). Так в чем проблема я не понимаю? Есть лишние 15 штук дак пошлите их в фонд мира. (Или мне. А я очень мирный).
Windows Safari Chrome
0
0
Никита (#461927)
Только что наткнулся (via avva) на скрипт, включающий 5 дополнительных способов авторизации: http://samy.pl/evercookie/
Возможно, вам будет интересно.
Linux Firefox
 Москва
0
0
Ага, только потом эти ваши куки сможет прочитать любой сайт. Очень удобно для авторизации ;)

Кроме того, там нет работы с флэшкуками, а они, как показывает практика, самые удобные.
Windows Safari Chrome
0
0
Никита (#461927)
Работа с флэш-куками там есть: Local Shared Objects (Flash Cookies)

Интересней всего хранение кук в сгенерированном PNG. Не уверен, правда, сможет ли их прочитать посторонний сайт.
Windows
0
0
[email protected]Леша (lesha)
Вот тебе еще ссылка на тему:
http://samy.pl/evercookie/

Это не к тому чтобы пользоваться, а для информации.
Через google-translate можно прочитать.

Больше всего поразило: "Хранение куки значений в RGB автоматически генерируемых картинок PNG, закешированных принудительно".
:)))
Linux Firefox
 Москва
0
0
Ага, только потом эти ваши куки сможет прочитать любой сайт. Очень удобно для авторизации ;)

Кроме того, там нет работы с флэшкуками, а они, как показывает практика, самые удобные.
Windows
 Киев
0
0
lesha (#437416)
Есть - - Local Shared Objects (Flash Cookies)

А что чужие могут прочесть - таки минус для авторизации. Но для других целей может и пригодиться.
Nokia-E90 Safari
 Москва
0
0
Leonid Kaganov
А какие могут быть еще цели у пачки неубиваемых кук (автор особо подчеркивает предназначение своего комплекта)? Настройки экрана для сайта хранить что ли? Или последний номер заказа в корзине? Номер последней прочитанной новости? Не смешите.

Комплект этот пока негоден для использования. Я буду по одной разбираться с процедурами и переносить в движок, тестируя на безопасность.

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

А Nokia хранит на какую версию сайта меня послать с nokia.com. Кто-то стиль сайта - темный/светлый. Кто-то узнает меня по имени, но при этом пароль все равно требует ввести (только логин автоматом подставляет) - так они ведут борьбу с подделками их сайта, отлавливающими пароли доверчивых пользователей.

А вот в систему пускать пользователя по картинкам или записи в истории нельзя конечно. Тут полностью согласен.

всего комментариев: 78

<< предыдущая заметка следующая заметка >>