我正在使用JQuery Cookies插件来读取/写入cookie,我在下面的代码中存储了用户名,现在我希望它应该被加入cookie并在阅读时被解密。
if ($('#remember').attr('checked'))
{
$.cookie('username', userNo.val());
$.cookie('remember', 'true');
}
else
{
// reset cookies
$.cookie('username', null);
$.cookie('remember', null);
}
请建议!!
答案 0 :(得分:1)
没有办法安全加密数据,同时仍然可以从您的Javascript访问它,因为为了这样做,(公开可见的)Javascript必须包含解码算法和用于加密的任何密钥。数据!
相反,如果您希望加密cookie中的数据,您可以加密服务器端的内容,然后在服务器端解密内容。客户端无法看到服务器上的任何密钥(除非他们以某种方式入侵,但是你遇到了更大的问题......)。
即使cookie中的数据是加密的,也不会阻止客户端篡改它们;它只会阻止客户知道它们中的内容。您可以使用HMAC方案来保证数据没有被篡改,但这似乎有点过分。
在这种情况下,您将存储用户名作为以后识别用户的方法;你可以很容易地构造一个随机的,毫无意义的值(“nonce”),它唯一地标识用户并存储而不是用户名。 .NET Guid.NewGuid()
对此有好处 - 在数据库中存储一个副本,在用户的cookie中存储一个副本。然后,当用户回来时,您可以在数据库中查找cookie值并找到正确的用户(因为GUID是唯一的)。