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