Стоит ли хранить данные у пользователя, которые могут быть расшифрованы только на сервере? Например JSON-строки с данными (имя, персональные настройки и т.д.) пользователя. Могут ли возникнуть проблемы?
Печеньки нужны чтобы хранить небольшой объем данных (это же не пироги). В случае если вы хотите запихать туда сессию пользователя (а это может быть куча информации), то готовьтесь к большому трафику.
Какие-то не самые секретные данные конечно можно. Например, в Laravel есть реализация сессий на шифрованых cookies (хотя так сессию хранить я бы не рискнул).
обычно делают так:
на сервере создают некоторую сессию пользователя
сессия имеет уникальный номер/ключ
этот ключ запихивают в куки
все, что нужно хранить для этого пользователя складывают в БД и цепляют к этому ключу
Когда пользователь осуществляет запрос к серверу - вы по ключу можете выдернуть информацию.
P.S: это, что касается хранения данных.
А в общем - нужен только идентификатор сессии для того что бы сервер понимал что это за клиент а все остальное храни где хочешь. Но если уж встал вопрос хранения данных на клиенте то подумай - стоит ли рассматривать куки в качестве такого хранилища? Ты же в курсе, что куки в открытом виде передаются при каждом запросы к серверу?