2011-02-09 6 views
1

Кажется, что проверка подлинности на основе файлов cookie является явным выбором сегодня для веб-служб, для которых требуются учетные данные для входа.HTTP-аутентификация против файлов cookie

Но как насчет того, если вы разрабатываете веб-службу, где клиенты не являются браузерами, а клиентское программное обеспечение (например, мобильное приложение), которое обращается к ресурсам через HTTP, используете ли вы проверку подлинности HTTP или аутентификацию cookie?

HTTP Auth:

  • Web-сервер выполняет проверку подлинности, поэтому при необходимости
  • Автоматически применяются к не кодовым ресурсам (например, JPG, XML, и т.д.) (Side Q легче изменить веб-приложения платформу: Есть есть ли способ сделать это с помощью печенья на основе AUTH)
  • Harder интегрировать базы данных, сохраненные учетные данные с сервера (AUTH .htaccess/.htpasswd)

Cookie Auth:

  • Fine управления зернистой доступа (код ресурса может реагировать по-разному на основе учетных данных)
  • Контроль за истечением сессии (через куки выдохов)
  • Полный контроль над опытом входа пользователя

Какие другие соображения я оставляю? Любые другие плюсы и минусы?

Some helpful discussion is here

+0

Если вы заинтересованы в безопасности между этими двумя типами аутентификации, прочитайте следующее: http://stackoverflow.com/questions/5052607/cookies-vs-basic-auth/5052622#5052622 –

ответ

1

С проверкой подлинности HTTP ресурс кода может по-разному реагировать на пользователя, выполнившего запрос. Имя пользователя обычно передается в код через HTTP-заголовок.

С проверкой подлинности HTTP вы все равно можете использовать сеансы и получать те же преимущества, которые они приносят. На самом деле, кража сеанса больше не такая уж большая проблема, потому что вы можете проверить, является ли пользователь, который хранится в сеансе, тем же, который аутентифицирован с помощью HTTP-аутентификации. По той же причине идентификаторы сеансов не обязательно должны быть такими, какие они должны быть с аутентификацией на основе файлов cookie.

+0

Хорошие баллы. Однако вы говорите, что «кража сеанса» не является проблемой.Вы имеете в виду обнюхивание пакетов HTTP и копирование файлов cookie сеанса? Кажется, что HTTP-аутентификация так же уязвима, как и пользователь: pass передаются в [легко декодируемом Base64] (http://en.wikipedia.org/wiki/Basic_access_authentication). Было бы немного сложнее украсть учетные данные HTTP Auth, если они передаются через HTTP. Или я не понимаю вашу точку зрения? – jpeskin

+0

С проверкой подлинности HTTP идентификатор сеанса малопригодно (потому что ему запрещен вход на веб-сервер до того, как веб-приложение даже запустится и у него есть возможность посмотреть идентификатор сеанса). Злоумышленник также должен знать имя пользователя и пароль. С другой стороны, для авторизации имя пользователя и пароль должны передаваться по каждому HTTP-запросу. Так что да, обнюхивание пакетов так же опасно, как и для проверки подлинности на основе файлов cookie. Я говорил о таких вещах, как совместное использование ссылки с идентификатором сеанса. – Oswald

0

Ну, когда клиент это мобильное приложение или что-то, что это не обычный браузер, приложение сервер все еще нуждается в какой-то отслеживания сеанса. Самый простой способ выполнить отслеживание сеансов - это использование каких-то «куки», либо стандартных HTTP-файлов cookie, либо пользовательских идентификаторов сеансов. Таким образом, идентификатор сеанса фактически является «cookie», даже если стандартный механизм cookie не используется. Я всегда назначаю идентификаторы сеанса для сеансов клиентов, поэтому я склонен голосовать за файл cookie.

0

HTTP basic auth - это кошмар, когда пароль скомпрометирован, так как нет возможности изменить его, не меняя сначала всех клиентов-легитимных. Вы также не можете заставить отдельного пользователя пройти проверку подлинности, а механизм для передачи учетных данных для проверки подлинности небезопасен (если вы не обернули его в https)

Действительно, ваш лучший вариант - использовать систему на основе файлов cookie, контроль за отдельными заверенными сеансами

Смежные вопросы