Форум сайта python.su
Всем привет. Я не собираюсь мучить вопросами КАК установить куки и КАК работать с сессиями. Меня интересует более глобальный вопрос. Как организовать работу так, чтобы это было ГРАММОТНО.
Т.е. смотрите. Я сейчас в самом элементарном виде ставлю куки вот так
response.set_cookie("name", user.name, max_age=6000, domain="localhost")
response.set_cookie("password", user.password, max_age=6000, domain="localhost")
Офлайн
Я не рекомендую так использовать куки, и уж точно не надо держать в них пароль.
Используйте только сессии.
Офлайн
dissdocЕсли учесть что использование response.set_cookie это единственно возможный способ установки куки, то да, нормально, с точки зрения API. Если же рассматривать с точки зрения логики и верности подхода, то ответить невозможно, т.к. мы не знаешь о вашей задаче.
Это нормально так устанавливать куки?
dissdochttp://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpResponse.delete_cookie
И второй вопрос - как принудительно удалить куки?
Офлайн
Задача простая. Пока изучаю джанго.
Просто решил попробовать написать авторизацию и работу пользователя на портале. Ну самое элементарное. Вот и думаю об организации.
Про класс User я знаю. Не стал его использовать только из-за соображения - я только учусь и у меня нет сроков, чтобы испоьзовать готовые проекты. А изучить можно только изобретая свой велосипед.
Если не юзать пароль… Остается использовать id (ну или login уникальный) пользователя и просто проверять активны куки или нет. Если активны, то вперед на работу за сайтом… но сразу вопрос - я ведь могу сам установить куки и получить права определенного юзверя… Как тогда организовать работу? Как хранить куки/сессии так, чтобы это было грамотно. Но я честно говоря не понимаю опасности хранить пароль в той же сессии например? В сессии можно хранить?
Блин, пока писал - запутался… Зачем тогда вообще куки, если сессии есть?
Офлайн
Подсмотрел способ - хранить сессии в БД, заведя еще одну модельку для сессий. Вариант показался грамотным.
Офлайн
Вообще-то джанго автоматически и по-умолчанию сохраняет сессии в базе. У пользователя только id этой сессии.
Джанга уже грамотно и безопасно всё хранит.
Офлайн
Да, кстати это я недавно нашел тоже…
http://docs.djangoproject.com/en/dev/topics/http/sessions/#using-sessions-out-of-views
Получить ключ вот так как я понял
request.session.session_key
request.session['member_id'] = m.id
Офлайн
Поясните пожалуйста пошагово. Я несколько раз прочитал - так и не понял сути проблемы.
Возможно вы не понимаете что такое и для чего нужны эти самые сессии. Суть в том, что каждый пользователь получает куку с id сессии, а ключи сессии содержатся на сервере. Это, позволяет избежать хранение в куках небезопасных данных, или их подстановки/исправления со стороны пользователя, т.е. кража куки не даст злоумышленнику дополнительной информации. Но, конечно, подмена сессии во время её существования - вполне возможная атака.
Более подробно о безопасности сессий можно почитать здесь - http://phpclub.ru/detail/article/sessions
Вкратце - наиболее эффективно - короткое время жизни сессии и SESSION_COOKIE_SECURE. Но, честно говоря, такое необходимо не часто, и на задачах где безопасность ставится во главу угла.
Всё остальное (на вроде “отпечатков”) фреймворк сделает за вас.
Про возможные проблемы в плане безопасности (в том числе и сессий), и их возможные решения, можно почитать тут: http://www.djangobook.com/en/beta/chapter20/
Отредактировано (Янв. 24, 2010 21:02:48)
Офлайн
Все. Я более менее разобрался в этом вопросе. Проблема была в том, что я не до конца понимал как в джанге организовано хранение сессий. Вроде как стало понятно все.
Офлайн