Шифрование файлов cookie в ASP.NET

Я хотел бы зашифровать cookies в ASP.NET.

Я следовал методу в этой статье , но у него есть недостаток, который использует reflection во внутреннем методе. Это привело к тому, что оно было помечено в обзоре кода – оно не является надежным для будущего, поскольку внутренняя реализация может измениться.

Есть ли метод с идентичной функциональностью, который не требует использования шифрования для внутренних методов?

Я использую .NET Framework 3.5 SP1 (предположим, что я не могу изменить версии фреймворка)

Почему бы просто не использовать шифрование, обнаруженное в System.Security.Cryptography, для шифрования и дешифрования имени и значения cookie, когда оно чувствительно? Вы можете написать некоторые служебные функции, чтобы управлять им довольно легко. Примеры функций утилиты:

private static void SetEncryptedCookie(string name, string value) { var encryptName = SomeEncryptionMethod(name); Response.Cookies[encryptName].Value = SomeEncryptionMethod(value); //set other cookie properties here, expiry &c. //Response.Cookies[encryptName].Expires = ... } private static string GetEncryptedCookie(string name) { //you'll want some checks/exception handling around this return SomeDecryptionMethod( Response.Cookies[SomeDecryptionMethod(name)].Value); } 

Вам больше не нужно катиться.

.Net 4.5 имеет MachineKey.Protect() и MachineKey.Unprotect() .

System.Web.Security.MachineKey

.Net 4.0 имеет MachineKey.Encode() и MachineKey.Decode() . Вы должны просто установить MachineKeyProtection на «Все». Они теперь устарели, и вы должны использовать более новые, если у вас есть 4.5.

Обратите внимание, что если вы попытаетесь использовать их в чем-то вроде консольного приложения, а не в ASP.Net, он, похоже, генерирует новый ключ при каждом перезапуске приложения. Я только проверял это быстро, но в ILSpy похоже, что он генерирует свои собственные значения по умолчанию, если отсутствует соответствующее app.setting.

Мне не удалось найти эквивалент nonASP.Net.

  • Шифрование учетных данных в приложении WPF
  • Безопасность сообщений WCF без сертификата и windows auth
  • Должен ли я налагать максимальную длину на пароли?
  • Почему при использовании функции Non-Random IV с режимом CBC существует уязвимость?
  • Лучший способ создать ключи AES, чем посев SecureRandom
  • Давайте будем гением компьютера.