Безопасны ли сеансовые переменные Laravel 4?

Есть ли (известный) способ для конечных пользователей редактировать переменную сеанса Laravel 4?

Есть ли (известный) способ для конечных пользователей редактировать переменную сеанса Laravel 4?

Да, есть, но только если вы избегаете своего пути, чтобы сделать это возможным. Необходимые шаги:

  1. Используйте драйвер cookie для сеансов (который хранит все данные сеанса в cookie, а не просто хранит идентификатор в cookie и сохраняет фактическую серверную серверную информацию). Обычно я рекомендую не сохранять состояние сеанса в файле cookie .
  2. Отключите сеансовое шифрование, о котором в документации настоятельно не говорится.

Если вы сделаете эти непродуманные шаги, в дополнение к разрешению пользователям перезаписывать данные сеанса, это риск для инъекции объектов PHP через unserialize() .

Совет. Если вы собираетесь хранить состояние сеанса в файле cookie, убедитесь, что оно завернуто в аутентифицированное шифрование . В библиотеке шифрования Laravel используется аутентифицированное шифрование (Encrypt then MAC), а сеансы используют это по умолчанию.


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

Последнее, что я проверил, Laravel по умолчанию зашифровывает данные сеанса (если вы не отключите шифрование). Если ваша база данных не находится на том же хосте, что и веб-сервер, оставьте ее включенной.

Им нужно будет запускать код (что-то вроде Session::put('key', 'value'); ) на вашем сервере .. или использовать возможные уязвимости в вашем приложении.

Если вы используете сеанс внимательно на своей стороне (валидация и т. Д.), Он должен оставаться неизменным, если вы его не обновите.

Подробнее о сессии Laravel здесь: http://laravel.com/docs/4.2/session