如何在ASP.NET网站中加密查询字符串参数?

时间:2010-07-13 10:08:25

标签: asp.net encryption query-string

在我的一个ASP.Net网站中,我必须提供一个指向用户的链接,其中所有查询字符串参数都应加密。

我在想的是使用命令"aspnet_regiis"(用于加密web.config数据),将输出作为查询字符串传递到已发布的U​​RL中。

当用户点击该链接时,我首先解密该字符串,然后获取查询字符串的原始数据。

我这样做是对的吗?有没有什么好的技术来加密和解密查询字符串?

1 个答案:

答案 0 :(得分:6)

在ASP.NET上下文中加密和解密字符串的一种好方法是使用FormsAuthentication.Encrypt Method

它似乎只适用于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's 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...
}