Возможно, было бы хорошим подходом использовать идентификатор сеанса и токен (хэш, основанный на IP, соли и идентификаторе сеанса), который восстанавливается при каждом запросе (используется алгоритм быстрого хеширования)? Я храню данные сеанса в базе данных (в настоящее время), и это означает, что у меня есть два запроса на каждый запрос. Это работает так:
- Выберите, где совпадают SID и TOK.
- Убедитесь, что токен, сгенерированный на основе текущего клиента, совпадает с данным в базе данных.
- десериализация данных в свойство.
- Сценарии и т. Д.
- Сериализация обновленных данных, восстановление SID / TOK и обновление базы данных, где SID / TOK = старые sid и ток, обновленные данные и новые sid и ток. Установите для cookie новый SID и TOK.
Таким образом, во-первых, cookie-файлы привязываются к тому, на чем я основываю токен (в данном случае к удаленному адресу), и, если он украден и данные клиента подделаны, cookie в любом случае будет полезен только для одного запроса - к тому времени. cookie перехвачен, он бесполезен.
Единственная ощутимая слабость, которую я вижу, это то, что злоумышленнику удалось захватить печенье, подделать и использовать его, прежде чем настоящий человек сможет сделать еще один запрос. Есть несколько способов решить эту проблему, о которых мне нужно подумать. Служебная нагрузка составляет два запроса и дважды генерирует хэш токена (один раз для проверки, один раз для замены).