Шифрование файлов 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.

  • Какая оптимальная длина для паролей пользователей?
  • Почему при использовании функции Non-Random IV с режимом CBC существует уязвимость?
  • Хеширование, соль и хранение хешированных значений
  • Шифрование / Расшифровка больших файлов (.NET)
  • Шифрование настроек приложения в web.config
  • Interesting Posts

    std :: vector reserve () и push_back () быстрее, чем resize () и индекс массива, почему?

    Rails 3.1 Активы – странное обслуживание в разработке

    Notepad ++ – Продолжить поиск сверху

    Как компьютер / ОС сообщают, какая оперативная память находится в машине?

    Подключение к VPN с помощью командной строки приводит к ошибке 691

    Как перечислить все файлы в подкаталоге в scala?

    Перемещение wifi-маршрутизатора и (возможно) кабельного модема, какой кабель (ы) следует удлинять, cat5 или коаксиальный?

    Как установить Windows 7 с внешнего жесткого диска?

    Проводной беспроводной модем в Linux

    Возможны ли определения рекурсивного типа C ++, в частности, можно ли положить вектор в определение T?

    Ясное, непрофессиональное объяснение разницы между | и || в c #?

    Переопределение и скрытие Java – Confused

    Большие числа в Java

    Как отключить автоматическое изменение раскладки клавиатуры в Windows 8?

    Диаграмма рассеяния Excel с группируемыми текстовыми значениями по оси X

    Давайте будем гением компьютера.