Если на js можно использовать sessionStorage, но говорят так делать не правильно.
Кто говорит? И в какой ситуации не правильно? Если хранить только клиентские данные, типа корзины, то можно и в local/session storage
Раз так, тогда как отслеживать их, постоянно отправлять гет запрос?
Когда делаешь запрос к серверу, в запрос кладётся некоторый идентификатор, по которому можно отличить одного клиента от другого. Тот самый session id. По нему уже можно из бд вытащить всякие сохранённые данные.
То есть получается, что бы взаимодействовать с сессией нужно постоянно использовать ajax, как по мне sessionStorage использовать куда дешевле...
Если в вашей ситуации использовать session storage безопасно, то используйте.