Cookie安全问题

时间:2011-07-09 13:14:39

标签: c# session cookies

如何记住在没有安全问题的情况下登录的用户?目前,我将id和guid存储到两个不同的cookie中,并在没有会话活动时进行比较。如果匹配,那么我重新创建会话。顺便说一句,id和guid都是加密的。

这种方法是否足够安全,还是应该遵循相当明确的方式?

2 个答案:

答案 0 :(得分:1)

我建议您使用forms authentication跟踪ASP.NET应用程序中的登录用户。

答案 1 :(得分:1)

由于使用XSS可以很容易地窃取cookie,因此如果您只将信息放在一个或两个cookie中,则无关紧要,因为盗窃将全部带走。

我已经解决了一个更复杂的程序:我将一个加密的cookie分成两部分(但是2个cookie也可以工作),一个固定,另一个变量每个会话。两者都保存在服务器端进行检查:它们只是会话标识符,cookie中没有合理的信息,与用户ID的对应关系保存在服务器上。

如果假用户使用被盗cookie输入帐户,则变量部分(或cookie)将发生变化,因此当真实用户再次连接时,他将无法进入,您将获得未经授权访问的证据:然后你可以删除服务器端的永久会话(由固定部分或cookie定义),以避免被盗的任何进一步访问。真实用户将重新登录并使用新cookie创建新的永久会话。您还可以警告他,您发现了一个安全漏洞,建议他重置密码(永远不能直接从cookie访问的操作)或使用其他浏览器进行不安全导航。

如果您保存其他用户信息(用户代理,按位置划分的IP),您也可以检查cookie的有效性,以避免假用户第一次进入。