Почему сеанс CherryPy не требует секретного ключа?

Я заметил, что сеанс Cherpy не требует настройки секретного ключа. Напротив, сеанс Pylons делает следующее: http://docs.pylonsproject.org/projects/pylons_framework/dev/sessions.html

Меня беспокоят проблемы безопасности, если я использую сеанс для запоминания аутентификации пользователя.

Кто-нибудь может объяснить, почему вишневой сессии не нужен секретный ключ? Или есть какие-либо предложения, как сделать безопасным использование сеанса для запоминания входа пользователя?


person KFL    schedule 16.07.2011    source источник


Ответы (1)


В основном существует два разных способа поддержания состояния сеанса: на сервере или на клиенте.

При подходе на стороне сервера вы храните данные сеанса в файлах, базе данных или в памяти на сервере и назначаете им идентификатор. Затем этот идентификатор сеанса отправляется клиенту и обычно сохраняется в файле cookie (хотя они также могут быть встроены в URL-адреса). Затем при каждом запросе идентификатор сеанса клиента считывается и используется веб-приложением для загрузки данных сеанса из любого места, где они хранятся на сервере. Таким образом, клиент никогда не имеет доступа ни к каким данным сеанса и не может их изменить, но недостатком является то, что вы должны защищаться от перехвата сеанса за счет использования устаревших идентификаторов сеанса вредоносными клиентами. Это модель, используемая сегодня большинством веб-фреймворков и приложений.

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

Pylons использует сеансы Beaker, которые можно настроить для полного хранения данных сеанса на стороне клиента. Вот почему вам нужен секретный ключ.

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

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

person James O'Doherty    schedule 15.08.2011