Недостатки совместного использования сеансов Django на нескольких поддоменах

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

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

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

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

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

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

спасибо ./ж


person user1135176    schedule 06.01.2012    source источник


Ответы (2)


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

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

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

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

person Aleksandar    schedule 19.02.2013

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

person esse    schedule 29.02.2012