j2a
ingvar
Народ, большая просьба просвятить немного по архитектуре beaker.session:
Я так понимаю используется “Cookie Sessions” по умолчанию?
Основная “фича” beaker.session, что сессионные куки (в том числе и для идентификации пользователя) нигде не хранятся, а передаются на сервер в http-пакете? Тогда как происходит отслеживание длительности сессий и как защищатся от подмены http-пакетов?
Ключь для шифрования и снятия “хэша” - “beaker.session.secret”?
В доках (http://wiki.pylonshq.com/display/beaker/Cookie-Only+Sessions) написано, что для шифрования используется пакет pycryptopp, но я его нигде не обнаружил в исходниках?
Извините, за может примитивные вопросы, но по докам и исходникам копать нет пока времени.
Бардак в моей голове © Александр Васильев
Обычно сессионные данные (чаще всего - что-то типа словаря) хранятся на стороне сервера, а на стороне клиента в куках – некий хеш, по которому можно вытянуть данные сессии из хранилища на сервере. Здесь, видимо, ты говоришь о том, что в Beaker 0.9 появились cookie-only сессии, когда все данные сессии хранятся в куки у клиента. Чтобы избежать подмены используют цифровую подпись (опция beaker.session.validate_key). Чтобы избежать перехвата данных – используют шифрование (опция beaker.session.encrypt_key). Как ты искал импорт pycryptopp и в какой версии, я не знаю, но в 0.9.4 находится тривиально грепом (hint: session.py:16).
P.S. В Beaker по дефолту обычные сессии, не cookie-only
Ага, такую архитектуру я по джанго понял, там “некий хеш” - это session_id, а “сессионные данные” хранятся в БД.
Думал в Pylons точно такая же схема, НО:
1. Не обнаружил файлов/таблиц БД, хранящих “сессионные данные”…остается сам процесс paster-а
2. Ставим простой эксперимент: Пускаем сервер “paster serve …” (он же веб-сервер), браузер, запрос на сервер , контроллером сохраняем в словаре сессии переменную, грохаем процесс сервера, запускаем сервер, новый запрос на сервер…контроллер говорит, что такая переменная в сессии уже есть…ОТКУДА?