Security 是否有防止cookies被盗的方法?
在Web 2.0应用程序中,许多用户通常希望保持登录状态(“记住我”标志),另一方面,他们的cookie可以访问非常私有的数据。有没有办法防止直接从计算机或通过嗅探窃取cookie的人可以使用cookie访问用户的数据?HTTPS始终不是一个选项 谢谢你,伯纳德Security 是否有防止cookies被盗的方法?,security,authentication,cookies,Security,Authentication,Cookies,在Web 2.0应用程序中,许多用户通常希望保持登录状态(“记住我”标志),另一方面,他们的cookie可以访问非常私有的数据。有没有办法防止直接从计算机或通过嗅探窃取cookie的人可以使用cookie访问用户的数据?HTTPS始终不是一个选项 谢谢你,伯纳德 [编辑]将IP地址连接到cookie也不是一个选项。将一个不明ID的cookie存储到本地服务器数据库中。根据cookie中提供的ID执行服务器端数据库查找。确保ID足够复杂,不容易猜到。将ID映射到用户的IP地址。如果他们的IP发生变
[编辑]将IP地址连接到cookie也不是一个选项。将一个不明ID的cookie存储到本地服务器数据库中。根据cookie中提供的ID执行服务器端数据库查找。确保ID足够复杂,不容易猜到。将ID映射到用户的IP地址。如果他们的IP发生变化,则强制他们再次登录,并创建一个新ID 在第二次阅读时,听起来好像你想要一个高水平的安全与你的双手绑。用户必须选择保持登录状态,从而增加其风险。从应用程序和服务器的角度来看,您可以实现世界上所有的安全性,但是如果用户忘记将笔记本电脑放在Tim Horton's(加拿大星巴克)的桌子上,那么这些都不会对您有任何好处
让用户自行选择是否继续登录,并警告他们信息存在风险。盖上饼干罐 撇开玩笑不谈,最好的选择已经陈述了——将cookie设为一个模糊的ID,并将其绑定到服务器端的IP地址查找。由于您编辑后表示无法将其绑定到IP地址,因此留下了模糊的ID部分。Cookie限制了您的选择—您在客户端放置内容的那一刻,它就成为了一种风险。Bernd—通过标准HTTP执行任何操作的问题在于它是纯文本的;任何人都可以伪造任何东西。IP欺骗比普通的cookie窃取更具挑战性,因此绑定到IP往往是人们所做的事情。正如您所说,这在高度动态的环境中不太适用 我能想到的唯一最安全的方法是使用HTTPS放置和验证“永久”cookie,然后(在同一HTTPS会话中)放置一个短期会话cookie。其余的通信可以通过常规HTTP完成,使用会话cookie进行身份验证 这样一来,支持加密的资源就更少了(只是握手),永久cookie不会公开——它只在加密的情况下传输——而窃取会话cookie只会带来有限的风险,因为cookie很快就会过期 尽管如此,不要让用户在包含真正敏感数据的网站上点击“记住我”!这就是为什么银行不这么做
希望这能有所帮助。关于在数据库中存储复杂的cookie ID和关联的IP,您实际上不必这样做。如果您有一个密钥K,就可以用K加密用户的ip,并将结果{ip}K作为cookie。只要你的密钥是安全的(密码没有被破坏——但如果发生这种情况,我们就有更大的问题),这是安全的。Bernd-你说将IP地址连接到cookie不是一个选项,我假设这是b/c,用户可以通过DHCP连接,因此每次都可以使用不同的IP。您是否考虑过将cookie绑定到DNS主机名?您可以使用私钥加密cookie,并将其存储在用户的邮箱中。然后,每当他们进来时,检查cookie,取消加密,然后对照cookie中的DNS主机名检查用户的当前DNS主机名。如果匹配,则允许他们进入。如果不允许,则不允许自动登录 仅供参考-在ASP.Net中,要获取用户框的DNS主机名,只需查看
Page.Request.UserHostName
KISS——只需使用会话,就可以使用已经由您选择的服务器端脚本语言自动创建的ID。这很难猜测。然后,如果被窃取,则将访问者的IP地址和用户代理存储在会话中(确保永远不输出),并且只考虑会话有效<强>仅当< /强>已经存储的IP地址和用户代理与远程客户端找到的匹配。p>
在这种情况下,攻击者必须执行以下三项操作:
它还有助于确保攻击者不知道为了正确接管受害者会话他/她必须做的所有事情。IE:他们可能会假设只需要cookie,然后失败。。。还要通过长期的尝试和错误来解决其他问题。通过这种方式,您可以通过隐蔽性和困难性获得安全性,这取决于攻击者的技能和他/她对系统的现有知识。也许使用会话ID和令牌(基于IP、salt和会话ID的哈希)是一种好方法,它会在每个请求中重新生成(使用快速哈希算法)?我(目前)将会话数据存储在数据库中,这意味着每个请求都有两个查询开销。它的工作原理如下: