Вы можете использовать что-то вроде Secure Cookie Protocol (PDF) для шифрования файлов cookie перед их отправкой. Вместо идентификатора сеанса вы можете использовать запрошенный IP-адрес или какой-либо другой идентификатор, который на 100% специфичен для пользователя в целом.
Итак, чтобы настроить его, вы должны создать ключ сервера k
. Затем вы создадите файл cookie следующим образом:
keyhmac = HMAC(user name + expiration time, k)
encrypted = ENCRYPT(data, keyhmac)
hmacenc = HMAC(user name + expiration time + data + session identifier, keyhmac)
cookie = user name + expiration time + encrypted + hmacenc;
Затем вы можете расшифровать его позже, используя обратный процесс. HMAC проверяет, что он не был подделан за пределами вашего сервера (при условии, что k
действительно секретно) ...
Тот факт, что он включает в себя идентификатор сеанса (лучше использовать SSL, но IP, возможно, может служить), означает, что он невосприимчив к атакам повторного воспроизведения или атакам с перехватом.
SSL был бы лучшим, но вы можете получить довольно хорошую систему, используя такую схему шифрования. Абсолютно лучшим было бы объединить эту схему с SSL, который затем предотвращает всевозможные гадости (включая взлом MITM, но не другие атаки MITM) ...