Недостатки совместного использования сессий Django на нескольких поддоменах - PullRequest
4 голосов
/ 07 января 2012

Я создал сайт Django с использованием Sites Framework и имею четыре сайта на разных поддоменах. Давайте назовем их one.mydomain.com; two.mydomain.com ... и т. д.

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

Я прочитал этот пост и этот пост о совместном использовании сеансов между поддоменами, и, похоже, все согласны с тем, что это плохая идея.

В моем случае я хочу, чтобы пользователь мог добавлять товары в корзину на одном поддомене, а затем перейти к корзине для оформления заказа. Я не вижу способа сделать это без обмена сессиями. Пользователь также должен иметь возможность добавить в корзину с другого сайта продукта и при оформлении заказа увидеть продукт с one.mydomain.com, продукт с two.mydomain.com и т. Д.

Итак, мой вопрос: почему разделение сессий является плохой идеей помимо потенциальных конфликтов? Предполагая, что я гарантирую, что единственные конфликты, которые происходят (и это должно произойти), это информация для входа в систему пользователя.

В моей настройке SECRET_KEY используется для всех сайтов и SESSION_COOKIE_DOMAIN = '. Mydomain.com'. Есть ли серьезный недостаток безопасности, который я пропускаю при этой настройке?

спасибо ./w

Ответы [ 2 ]

1 голос
/ 19 февраля 2013

Мне кажется, это недостаток безопасности в тех случаях, когда вы не контролируете все дочерние домены определенного домена. Например, у вас есть one.mydomain.com и two.mydomain.com, но браузер также отправит ваш файл cookie на сайт bad.mydomain.com, поскольку в ваших настройках SESSION_COOKIE_DOMAIN = '. Mydomain.com'.

Другая потенциальная дыра может случиться, если вы оставите свою среду разработки в качестве одного из поддоменов (например, dev.mydomain.com). Вы бы не были изолированы, если бы это было так.

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

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

0 голосов
/ 29 февраля 2012

Из многих вещей, которые я прочитал, это считается плохой идеей, кажется, что вы можете создать очень трудные для отслеживания ошибки, если вы попытаетесь разделить сессии между сайтами. Насколько я знаю, обычно лучше сделать вещи как можно меньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...