我有一个“记住我”选项的登录页面。
如果用户希望使用“记住我”选项将其凭据保存在系统中,则会使用Cookie保存详细信息。
下次用户访问该网站时,将按预期从Cookie中获取凭据。
我注意到,因为这些值在保存cookie时未加密。所以我可以使用chrome的“Inspect element”来查找密码文本框的值(取自cookie)
无论如何,我可以防止这种情况发生。任
答案 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#中的成员资格等内置存储过程使用了这种无法轻易破解的加密...
更多信息: Membership - Log-in Cookies and Sessions Microsoft site
答案 2 :(得分:0)
尝试将值设置为加密文本
Response.Cookies['cookieName'].Value = MyEncryptMethod(model.rememberMe);