Основное различие между cookie-файлом и сеансом состоит в том, что данные сеанса хранятся на стороне сервера, а данные cookie-файла хранятся на стороне клиента. Но поскольку отправка конфиденциальных данных между сервером и клиентом подразумевает значительные проблемы с безопасностью (подделка данных, прослушивание и т. Д.), Данные лучше хранить на стороне сервера.
Но чтобы связать клиента с сеансом, вам нужен какой-то идентификатор. Вот где вводится идентификатор сессии. Поскольку HTTP является без сохранения состояния (то есть каждый запрос является независимой транзакцией, не связанной с каким-либо предыдущим запросом), не существует собственного способа идентифицировать клиента только по его запросам.
Таким образом, вместо того, чтобы хранить данные в файле cookie на стороне клиента и отправлять их обратно при каждом запросе, вы просто сохраняете идентификатор сеанса на стороне клиента и отправляете их обратно при каждом запросе. Это намного более безопасно, поскольку конфиденциальные данные не передаются по проводам. Все, что отправлено, это идентификатор сеанса (здесь вы можете использовать либо URL, либо cookie).
Но теперь, когда идентификатор сеанса является единственной информацией, которая связывает клиента с сеансом, именно идентификатор сеанса стал своего рода конфиденциальными данными, которые необходимо защищать. Здесь вам понадобится аутентификация и управление сеансом , чтобы избежать атак на сеанс.