Как я могу зашифровать параметры строки запроса на веб-сайте ASP.NET?

На одном из моих сайтов ASP.Net я должен предоставить ссылку пользователю, в котором все параметры строки запроса должны быть зашифрованы.

Я хочу использовать команду "aspnet_regiis" (как используется для шифрования данных web.config), передать вывод в виде строки запроса в опубликованном URL-адресе.

Когда пользователь нажимает эту ссылку, я сначала дешифрую строку, а затем извлекаю исходные данные для строки запроса.

Правильно ли я это делаю? Есть ли хорошая техника для шифрования и расшифровки строк запроса?

Ответ 1

Хорошим способом шифрования и расшифровки строки в контексте ASP.NET является использование метода FormsAuthentication.Encrypt

Кажется, он подходит только для cookie, но он хорошо работает в другом контексте, плюс вы также можете добавить дату истечения срока действия (или DateTime.MaxValue, если это не нужно), это пример кода:

public static string Encrypt(string content, DateTime expiration)
{
    return FormsAuthentication.Encrypt(new FormsAuthenticationTicket(1,
        HttpContext.Current.Request.UserHostAddress, // or something fixed if you don't want to stick with the user IP Address
        DateTime.Now, expiration, false, content));
}

public static string Decrypt(string encryptedContent)
{
    FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(encryptedContent);
    if (!ticket.Expired)
            return ticket.UserData;

    return null; // or throw...
}