我如何记住没有安全问题的登录用户?目前,我将 id 和 guid 存储到两个不同的 cookie 中,并在没有事件 session 时比较它们。如果匹配,则我重新创建 session 。顺便说一句,id 和 guid 都没有加密。
这种方法是否足够安全,还是我应该遵循一种相当独特的方法?
最佳答案
由于使用 XSS 很容易窃取 cookie,因此将信息放在一个或两个 cookie 中并不重要,因为盗窃会把它们全部拿走。
我已经解决了一个更复杂的过程:我将一个加密的 cookie 分成两部分(但 2 个 cookie 也可以),一个固定,另一个在每个 session 中可变。两者都保存在服务器端以供检查:它们只是 session 标识符,cookie中不包含任何敏感信息,与用户id的对应关系保存在服务器上。
如果假冒用户使用窃取的 cookie 进入帐户,可变部分(或 cookie)将发生变化,因此当真实用户再次连接时他将无法进入,您将获得发生未授权访问的证据:然后你可以删除服务器端的永久 session (由固定部分或 cookie 定义)以避免被盗的任何进一步访问。真实用户将重新登录并使用新的 cookie 创建一个新的永久 session 。您还可以警告他您发现了安全漏洞,建议他重设密码(永远不能直接从 cookie 访问的操作)或使用其他浏览器进行不安全的导航。
如果您保存额外的用户信息(用户代理、位置 IP),您还可以检查它们的 cookie 有效性,以避免假冒用户的第一次进入。
关于c# - Cookie 安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6634951/