HTTP - stateless протокол, т.е. не предполагает поддержания соединения между клиентом и сервером. Это значит, что сервер не может связать информацию о пользователе с конкретным соединением и вынужден загружать ее при каждом запросе.
401 Unauthorized - для доступа к ресурсу нужна авторизацияWWW-Authenticate: Basic realm="admin" - запрос логина/пароля для раздела adminAuthorization: Basic Z2l2aTpkZXJwYXJvbA== - передача логина/пароля в виде
base64(login + ':' + password)403 Forbidden - логин/пароль не подходятREMOTE_USER - CGI переменная с именем авторизованного пользователяhttpsCookies - небольшие фрагменты данных, которые браузер хранит на стороне клиента и передает на сервер при каждом запросе. Cookies привязаны к доменам, поэтому при каждом запросе сервер получает только «свои» cookies. Невозможно получить доступ к cookies с другого домена. Cookies используются для поддержания состояния (state management) в протоколе HTTP и, в частности, для авторизации.
name=value - имя и значение cookieExpires - время жизни cookie, по умолчанию - до закрытия окна.Domain - домен cookie, по умолчанию - домен текущего URL.Path - путь cookie, по умолчанию - путь текущего URL.Secure - cookie должна передаваться только по httpsHttpOnly - cookie не доступна из JavaScriptДля удаления cookie, сервер устанавливает Expires в прошлом.
При каждом запросе браузер выбирает подходящие cookies и отправляет только их значения.
http://my.app.site.com/blog/post/12ExpiresDomain совпадает с my.app.site.com или является .суффиксом,
например Domain=.site.com
Path является префиксом /blog/post/12, Path=/blog/
Secure
URL = /login/
При запросе по любому URL:
Cookie свой sessidsessidid из сессииmiddleware.
Middleware - это Python класс, в котором есть один из указанных ниже методов.
Список всех активных middleware указан в настройке MIDDLEWARE_CLASSES.
process_request(request)process_view(request, view, args, kwargs)process_response(request, response)process_exception(request, exception)Для выхода из приложения достаточно удалить объект сессии:
Предоставляет поддержку сессий, в том числе анонимных. Позволяет хранить в сессии произвольные данные, а не только ID пользователя. Позволяет хранить сессии в различных хранилищах, например Redis или Memcached.
Предоставляет готовую модель User, готовую систему разделения прав,
view для регистрации / входа / выхода. Используется другими приложениями, например django.contrib.admin
Главная задача - максимально затруднить доступ злоумышленника к исходному паролю пользователя. Меры безопасности:
Основное направление атаки - кража cookie, хранящей ключ сессии, т.е. кража авторизации. Меры безопасности:
HttpOnly флаг для сессионной cookie