Как я могу зашифровать содержание cookie простым способом в C# 3.0?

C99 и C++ 03 стандарта доступны в книжной форме от Wiley:

Плюс, как уже упомянуто, рабочий проект для будущих стандартов часто доступен от веб-сайтов комитета:

проект C-201x доступен как N1336 и C++ 0x проект как N3225.

6
задан AndreMiranda 7 July 2009 в 15:53
поделиться

3 ответа

Тебе, наверное, не стоит этого делать. Если файл cookie является конфиденциальным, храните его только на сервере.

Если вам действительно нужно, есть несколько способов сделать это. Во-первых, вам нужно будет преобразовать открытый текст в массив байтов, например:

var plainBytes = Encoding.UTF8.GetBytes(plaintext);

Если вы уверены, что ваш открытый текст никогда не будет использовать Unicode, вы можете использовать вместо него Encoding.ASCII ; это приведет к уменьшению размера файла cookie).

Затем вам нужно будет его зашифровать. Самый простой способ сделать это - использовать DPAPI, вот так. (Сначала добавьте ссылку на System.Security.dll ). Обратите внимание, что это не будет работать на ферме серверов.

var encryptedBytes = ProtectedData.Protect(plainBytes, null, DataProtectionScope.CurrentUser);

Наконец, вам нужно преобразовать его обратно в текст, чтобы вы могли поместить его в cookie. Лучше всего это сделать в Base64, например:

Response.AddCookie("MyEncryptedCookie", Convert.ToBase64String(encryptedBytes));

Чтобы расшифровать cookie, вам нужно отменить эти шаги, например:

var encryptedBytes = Convert.FromBase64String(Request.Cookies["MyEncryptedCookie"].Value);
var decryptedBytes = ProtectedData.Unprotect(encryptedBytes , null, DataProtectionScope.CurrentUser);
var plaintext = Encoding.UTF8.GetString(decryptedBytes);

Обратите внимание, что файл cookie будет очень большим даже для небольших открытых текстов.

Если вы хотите использовать его на ферме серверов, вы можете использовать AES; посмотрите System.Security.Cryptography.RijndaelManaged .

10
ответ дан 10 December 2019 в 00:42
поделиться

Самый простой способ - не шифровать его! Просто используйте идентификатор файла cookie (плюс соль) для поиска значений (содержимого) на сервере.

2
ответ дан 10 December 2019 в 00:42
поделиться

Самый безопасный способ сделать это - использовать состояние сеанса ASP.Net вместо файлов cookie. Поскольку состояние сеанса никогда не отправляется клиенту, вам не о чем беспокоиться.

-2
ответ дан 10 December 2019 в 00:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: