在Web 2.0应用程序中,许多用户通常希望保持登录状态(“记住我”标志),而他们的Cookie可能会访问非常私密的数据。有没有办法防止窃取Cookie的人 - 直接从计算机或通过嗅探 - 使用Cookie来访问用户的数据?始终使用HTTPS不是一个选择。谢谢,Bernd。[编辑]将IP地址连接到Cookie也不是一个选择。
关于在数据库中存储复杂的cookie id和相关IP,您其实不需要这样做。如果您有一个秘密密钥K,则足以使用K加密用户的IP,并将结果{IP}K作为cookie。只要您的密钥是安全的(并且加密方式没有被破解 - 但如果发生这种情况,我们会有更大的问题),这是安全的。
将一个不常见的ID作为cookie存储到本地服务器数据库中。根据cookie中提供的ID进行服务器端DB查找。确保ID足够复杂,以便不易猜测。将ID映射到用户的IP地址。如果他们的IP地址发生变化,则强制他们重新登录并创建新的ID。
再次阅读,听起来像是您想要高水平的安全性,但手脚被绑住了。用户必须有选择保持登录状态,从而增加他/她的风险。您可以从应用程序和服务器的角度实现所有安全性,但如果用户忘记在Tim Horton's(加拿大星巴克)的桌子上留下笔记本电脑,那么这些都没有用。
让用户自行选择是否保持登录状态,并警告他们的信息存在风险。
不要让饼干罐子敞开着。
开玩笑的,最好的选择已经被提出 - 将饼干设为一个模糊的ID,并将其与服务器端的IP地址查找绑定。由于您编辑后说无法将其绑定到IP地址,这就只剩下了模糊的ID部分。使用cookie时您的选择是有限的 - 一旦在客户端放置了某些东西,它就成为了风险。
Page.Request.UserHostName