Поддержание состояния через веб-запросы всегда является проблемой, так как сеть по своей сути не имеет состояния.
Независимо от того, используете ли вы скрытый Guid (или другой уникальный системный идентификатор) или идентификатор сеанса в cookie, оба они открыты для злоупотреблений. Тем не менее, большинство систем, которые реализуют «состояние сеанса», делают это с помощью файлов cookie.
Цель состояния сеанса «bag» - хранить информацию между веб-запросами, в точности ту цель, о которой вы упомянули, поэтому, хотя она может показаться «неправильной», это очень распространенный подход. Помните, что в браузере клиента хранится только идентификатор сеанса, а не фактические данные сеанса; это хранится на сервере.