В основном существует два разных способа поддержания состояния сеанса: на сервере или на клиенте.
При подходе на стороне сервера вы храните данные сеанса в файлах, базе данных или в памяти на сервере и назначаете им идентификатор. Затем этот идентификатор сеанса отправляется клиенту и обычно сохраняется в файле cookie (хотя они также могут быть встроены в URL-адреса). Затем при каждом запросе идентификатор сеанса клиента считывается и используется веб-приложением для загрузки данных сеанса из любого места, где они хранятся на сервере. Таким образом, клиент никогда не имеет доступа ни к каким данным сеанса и не может их изменить, но недостатком является то, что вы должны защищаться от перехвата сеанса за счет использования устаревших идентификаторов сеанса вредоносными клиентами. Это модель, используемая сегодня большинством веб-фреймворков и приложений.
Другой подход заключается в том, чтобы полностью хранить данные сеанса на стороне клиента внутри файлов cookie. Недостатком этого подхода является то, что данные могут быть просмотрены и изменены клиентом, поэтому вы должны позаботиться о правильной подписи и шифровании данных, чтобы предотвратить их изменение. Вот где в игру вступает хороший секретный ключ. Положительным моментом является то, что вам также не нужно беспокоиться о перехвате сеанса.
Pylons использует сеансы Beaker, которые можно настроить для полного хранения данных сеанса на стороне клиента. Вот почему вам нужен секретный ключ.
CherryPy сохраняет данные сеанса только на сервере, а затем отправляет пользователю файл cookie с идентификатором сеанса, поэтому клиент никогда не видит данные сеанса и не может их изменить. Вы можете настроить его на использование файлов или просто хранить все в памяти. Вы даже можете подключиться к нему и использовать базу данных для хранения данных сеанса.
Лично я предпочитаю подход, используемый CherryPy, поскольку он используется в большинстве веб-сайтов. Его легче защитить, и вы можете легко обмениваться данными сеанса с другими приложениями, работающими на вашем сервере, не беспокоясь о шифровании или ключах.
person
James O'Doherty
schedule
15.08.2011