仅限客户端的Cookie

7
我需要类似cookie的东西,但我特别不希望它返回到服务器。我称其为“客户端会话cookie”,但任何合理的机制都可以。
基本上,我想在服务器上加密存储一些数据,并让用户在浏览器中输入密码。浏览器使用密码解密数据(或使用密码创建并加密数据),服务器仅存储加密数据。为了保护服务器上的数据安全,服务器不应存储密码,也永远不应收到密码。理想情况下,应该有一个cookie会话过期来进行清理。
当然,我需要在用户浏览网站时在多个页面上可用。
我能想到的最好的方法是使用某种iframe机制将数据存储在JavaScript变量中,但那很丑陋。有人有什么想法如何实现这样的东西吗?
顺便说一句,平台是ASP.NET,但我不认为这很重要。它需要支持广泛的浏览器,包括移动设备。
针对下面的一个答案,让我澄清一下。我的问题不是如何实现加密,这不是问题。问题是在哪里存储密码,以便它在页面之间是持久的,但不超过会话,并且以使服务器看不到它的方式存储密码。

我想在服务器上保持数据加密,并且只有在用户拥有密码时才能访问。 - Mike Jones
是的,这必须在JavaScript中完成。但是,如果您正在处理任何大量的数据,那么您将把很多处理工作转移到客户端浏览器上。 - Stefan H
2个回答

10
你可以使用JavaScript的localStorage对象。深入浅出HTML5电子书中有一章非常好的介绍。我认为这一章还提到了一些可能的解决方法,用于不支持localStorage的浏览器。

5
对于你所寻找的内容,我会说JavaScript是你能做的最好的选择。
你可以将加密数据检索到服务器上,并在客户端使用JavaScript解密。没有密码传输,用户也不需要保留秘密。
这取决于你使用的加密算法,但有相应的库(例如Stanford Javascript Crypto Library)。
(但我不明白你为什么要谈论cookies)
如果你对存储方面而非加密方面感兴趣,也许你可以考虑Thomas Frank的session variables

谢谢您的回答。我的问题更多是关于在哪里存储密码,而不是加密本身。但我会编辑我的问题以澄清。 - Mike Jones
好的,我误解了。也许可以看一下会话变量 http://www.thomasfrank.se/sessionvars.html - Martin Trigaux
sessionvars 这个东西看起来很完美,但我必须解决安全方面的考虑。所以我想接受你的评论而不是你的答案 :-) 我会接受你的答案。谢谢你的帮助。 - Mike Jones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接