如何加密ASP mvc3中的cookie?

时间:2013-12-06 11:22:42

标签: c# asp.net asp.net-mvc-3 cookies encryption

我有一个“记住我”选项的登录页面。

如果用户希望使用“记住我”选项将其凭据保存在系统中,则会使用Cookie保存详细信息。

下次用户访问该网站时,将按预期从Cookie中获取凭据。

我注意到,因为这些值在保存cookie时未加密。所以我可以使用chrome的“Inspect element”来查找密码文本框的值(取自cookie)

无论如何,我可以防止这种情况发生。任

  1. 保存到Cookie时加密值
  2. 即使用户“检查元素”,他也无法看到文本框的值(我猜几乎不可能)

3 个答案:

答案 0 :(得分:0)

您是否使用凭据登录每个请求的用户?我认为你应该重新考虑你的策略,做一次授权,然后使用FormsAuthentication之类的东西来创建一个包含用户身份的加密会话cookie。

然后您不需要继续登录用户,也不需要担心加密标准cookie(无论如何这都是一种非常危险的方法)。

例如您的登录处理代码可以执行:

string username = // get username;
string password = // get password;
bool rememberMe = // get remember me setting.

if (YourAuthenticationSystem.Authenticate(username, password))
{
   FormsAuthentication.SetAuthCookie(username, rememberMe);
}

如您所见,此方法支持“记住我”选项。

您将需要web.config代码:

<authentication mode="Forms">
  <forms name="TheNameOfYourAuthCookie" loginUrl="http://yourdomain.com/Login" path="/" domain="" timeout="40320" slidingExpiration="true" />
</authentication>
<authorization>
  <deny users="?" />
</authorization>

在此处阅读有关FormsAuthentication的更多信息:http://msdn.microsoft.com/en-us/library/xdt4thhy(v=vs.100).aspx

答案 1 :(得分:0)

要加密密码等消息/文本,您可以使用一些 DSA算法,这将基于Key和一些Prime数据,

使用哈希表进行加密的其他方式/ C#中的成员资格等内置存储过程使用了这种无法轻易破解的加密...

  • 我建议您不要使用cookie来存储密码等文本 加密。使用会话变量来启动和停止会话,何时 会话被盯着并验证浏览器本身要求保存 你的密码..等等。
  • 任何开发人员通常用于保护身份验证的最佳方式 使用c#中的工具称为成员资格。 (提供所有 内置登录,注销,用户, Remember_Me 等功能 功能...由Microsoft c#。请使用它。

更多信息: Membership - Log-in Cookies and Sessions Microsoft site

答案 2 :(得分:0)

尝试将值设置为加密文本

 Response.Cookies['cookieName'].Value = MyEncryptMethod(model.rememberMe);