Single Sign On with Nginx
Andrew Kopeyko
kaa на zvuki.ru
Пт Фев 26 12:36:51 MSK 2010
Mikhail Fursov wrote:
> 2010/2/26 Andrew Kopeyko <kaa at zvuki.ru <mailto:kaa at zvuki.ru>>
>
> Mikhail Fursov wrote:
>
>
> 2) Должна быть указан URL страницы на которую переходить при
> ошибке аутентификации. Тут важно передать странице с ошибкой
> полную информацию об аутентификации - логин, пароль, тип ошибки
> (если возможно). В Apache этого нет, поэтому когда происходит
> ошибка аутентификации и пользователя требуют заново ввести
> пароль совсем непонятно по какой причине: его аккаунт
> заблокирован, задан неправильный пароль etc. Это очень неудобно.
>
>
> Зато правильно с точки зрения безопасности - при отказе в доступе не
> происходит раскрытия информации. Удивительно, что вы не знаете таких
> базовых вещей.
>
> А ваш "дружественный" интерфейс будет подыгрывать взломщику,
> позволяя ему последовательно подобрать логин, а затем пароль.
>
> Вы ведь не ограничиваете кол-во неудачных попыток авторизации?
>
>
> Я не гуру в разработке веб-серверов но не вижу тут никакого раскрытия
> информации. На error-document шли бы те же данные, что ввел сам
> пользователь. Что из них ожно раскрыть?
Если вы не будете разжёвывать пользователю что именно он ввёл
неправильно, а просто скажете "не попал" - тогда раскрытия не будет.
А вот если вы будете ему сообщать (условно) "неправильный логин", "логин
заблокирован", "логин верный, неверен пароль" - это уже раскрытие
информации. Ведь до момента успешной авторизации вы знать не знаете кто
сидит на другой стороне - валидный пользователь, или злоумышленник.
Собственно, для того вы аутентификацию и делаете - дабы отличить одного
от другого.
Посмотрите вокруг - в подавляюшем большинстве информационных систем при
неудачной аутентификации говорится что-то типа "доступ запрещён" не
уточняя по какой именно причине. Windows в этом месте - сделан
исключительно правильно.
Но вы, если я правильно вас понял, хотите облегчить пользователю жизнь,
и подсказывать бедолаге в чём именно он ошибся, в логине или в пароле.
Т.е. в дилемме "удобство vs. безопасность" вы выбираете "удобство", тем
самым снижая безопасность вашей системы.
Безопасность будет снижаться, потому что злоумышленнику не нужно будет
подбирать всю пару логин-пароль - он сможет, пользуясь подсказками
вашего дружественного интерфейса, отдельно подобрать незаблокированный
логин (передавая, к примеру "" в качестве пароля), и затем подобрать
верный пароль к этому логину. Поскольку длина отдельно логина
существенно меньше длины пары логин-пароль, времени на такой подбор
потребуется существенно меньше.
Решать, разумеется, вам - но настоятельно советую отказаться от вашей
затеи "с удобствами", и наружу выдавать только сообщение "доступ
запрещён", без подробностей.
--
Best regards,
Andrew A. Kopeyko <kaa at zvuki.ru>
http://www.zvuki.ru/
Подробная информация о списке рассылки nginx-ru