Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 7, 2009 14:51:01

fetish
От:
Зарегистрирован: 2009-04-07
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

как подключить свой механизм сессий

имеем след. неприятный момент: стандартные сессии в джанго никак не защищены от перехвата сида
разные разглагольствования в документации про секьюре_куки и прочая белиберда - это для пионеров. никакого практического смысла эти действия не несут. придется все делать самому.

итак, я хочу сделать следующее: сессиия должна не тупо подниматься по sessionid, но в поднятой сессии еще должны проверяться параметры предыдущего соединения на предмет совпадения с текущими. в частности, например, REMOTE_ADDR
как я понимаю, мне нужно переопределить django.contrib.sessions.SessionMiddleware (в частности, метод process_request), чтобы он после поднятия сессии производил проверку request.META на соответствие с session и в случае несоответствия, в request.session заводилась бы новая сессия

вопрос: как это сделать?
ибо у меня никак не получается заставить джангу подхватить сессии через мой миддлварь…



Офлайн

#2 Апрель 7, 2009 15:39:12

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

как подключить свой механизм сессий

fetish
вопрос: как это сделать?
Отключить стандартную мидлварь и включить свою на её место.



Офлайн

#3 Апрель 7, 2009 20:18:32

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

как подключить свой механизм сессий

fetish
разные разглагольствования в документации про секьюре_куки и прочая белиберда - это для пионеров. никакого практического смысла эти действия не несут.
Подтвердите фактами ваше утверждение, чтобы не вводить в заблуждение тех кто не в курсе этого вопроса, что это белеберда.
И тогда вам нужно сообщить об этом разработчикам – указать им что они “пионеры” чтобы переделали свой “неудачный софт”. Раз вы тут так кричите о этой проблеме.

Спасибо за внимание.

Офлайн

#4 Апрель 7, 2009 20:46:40

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

как подключить свой механизм сессий

Если уж так хочется - стоит использовать HTTPS. Проверка REMOTE_ADDR тоже ломается “пионерскими” методами. Тогда как HTTPS вполне надежен - и изобретать ничего не нужно.



Офлайн

#5 Апрель 7, 2009 21:33:57

fetish
От:
Зарегистрирован: 2009-04-07
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

как подключить свой механизм сессий

Daevaorn
Отключить стандартную мидлварь и включить свою на её место.
ну это понятно
а как это сделать-то?
допустим, я нарисовал
from django.contrib.sessions.middlware

class MySessionMiddleware(middleware.SessionMiddleware):
def process_request(self, request):
...
как теперь мне объяснить джанге, что именно его нужно использовать в сессии?

Андрей Светлов
Если уж так хочется - стоит использовать HTTPS.
не поможет
Андрей Светлов
Проверка REMOTE_ADDR тоже ломается “пионерскими” методами.
например?

romankrv
Подтвердите фактами ваше утверждение, чтобы не вводить в заблуждение тех кто не в курсе этого вопроса, что это белеберда.
зайдите в видеораздел на xakep.ru или video.antichat.ru и посмотрите как воруют чужие кукисы
romankrv
И тогда вам нужно сообщить об этом разработчикам – указать им что они “пионеры” чтобы переделали свой “неудачный софт”.
разработчикам ничего сообщать не нужно. они все правильно сделали. в америке бессмысленно привязывать сессию к ip-адресу по очень простой причине - у одного из самых крупных провайдеров америки - AOL - ip-адрес пользователя может смениться в любой момент.
поэтому девелоперы джанго позволили конечным разработчикам переопределять поведение стандартных моделей



Отредактировано (Апрель 7, 2009 22:29:06)

Офлайн

#6 Апрель 7, 2009 21:38:59

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

как подключить свой механизм сессий

fetish
ну это понятно
а как это сделать-то?
ну что же вы сами как пионер и не читаете документацию?:-) http://docs.djangoproject.com/en/dev/topics/http/sessions/#enabling-sessions

Вот на место стандартной SessionMiddleware свою и ставьте.



Офлайн

#7 Апрель 7, 2009 22:20:12

fetish
От:
Зарегистрирован: 2009-04-07
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

как подключить свой механизм сессий

Daevaorn
Вот на место стандартной SessionMiddleware свою и ставьте.
О.Е. !!! все заработало
надо свой миддлварь прописать в MIDDLEWARE_CLASSES ПОСЛЕ ‘django.contrib.sessions.middleware.SessionMiddleware’
иначе будет работать стандартный механизм сессий

а я даже ‘django.contrib.sessions.middleware.SessionMiddleware’ удалял из MIDDLEWARE_CLASSES, но что джанго сильно ругался

однако, теперь мне вот что стало непонятно:
как джанго узнал, что нужно использовать мою миддлварь? неужели ему пофиг и он смотрит исключительно по именам методов?
я обязательно проверю это завтра, если не забуду - сегодня мне уже ничего не дадут сделать :)

Daevaorn
ну что же вы сами как пионер и не читаете документацию?:-)
в документации подробно расписано как делать “хелло ворды”
о том как работает джанго и как с ней работать в документейшене почти ничего не сказано



Офлайн

#8 Апрель 7, 2009 23:53:08

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

как подключить свой механизм сессий

fetish
как джанго узнал, что нужно использовать мою миддлварь? неужели ему пофиг и он смотрит исключительно по именам методов?
Джанга пробегает по списку мидлварей, дергает каждую по порядку и вызывает методы в зависимости от стадии обработки запроса.
fetish
в документации подробно расписано как делать “хелло ворды”
о том как работает джанго и как с ней работать в документейшене почти ничего не сказано
Вы ошибаетесь. В документации покрыто очень много юзкейсов от простых до сложных. В том числе и ответ на ваш вопрос.



Офлайн

#9 Апрель 8, 2009 00:37:38

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

как подключить свой механизм сессий

1. У нас тоже большинство пользователей с динамическими айпи, или практически с общей внешней. Так что или не будет работать проверка и будут заводится новые сессии, или внутри одного провайдера/сети можно вполне украсть куки, и те пройдут проверку.
2. https позволяет закрыть траффик от третьих лиц, а следовательно украсть куки обычным сниффером не получится.
По поводу подставки IP - я не знаю простого способа это сделать.

Офлайн

#10 Апрель 8, 2009 08:28:33

fetish
От:
Зарегистрирован: 2009-04-07
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

как подключить свой механизм сессий

Daevaorn
…и вызывает методы в зависимости от стадии обработки запроса.
вот это я и подозревалл….
Ferroman
https позволяет закрыть траффик от третьих лиц, а следовательно украсть куки обычным сниффером не получится.
никакие снифферы не нужны
достаточно найти xss
Ferroman
По поводу подставки IP - я не знаю простого способа это сделать.
вот именно
методы обхода есть, но атака в данном случае будет весьма трудозатратна для нападающего
Ferroman
У нас тоже большинство пользователей с динамическими айпи…
динамическим, но, тем не менее, постоянным в течение сессии
аол меняет внешние айпишники своим клиентам раз в час (или два?) по очень простой причине - чтобы они не тянули из интернета тяжелые файлы
и то это обходится покупкой внешнего ip
Ferroman
…или практически с общей внешней.
в любом случае, круг атакующих сильно сужается
Ferroman
…или внутри одного провайдера/сети можно вполне украсть куки, и те пройдут проверку.
а вот для этого есть уже другие способы
я же не сказал, что я только ip проверяю :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version