我希望我的网站有一个用户可以点击的复选框,这样他们每次访问我的网站时都不必登录。我知道我需要在他们的计算机上存储一个cookie来实现它,但该cookie中应包含哪些内容?
此外,是否存在常见错误,需要注意保持此Cookie不会出现安全漏洞,这可以在仍然提供“记住我”功能时避免使用?
答案 0 :(得分:511)
您可以使用here as best practice(2006)或an updated strategy described here(2015)所述的策略:
这种方法提供了纵深防御。如果有人设法泄漏数据库表,它不会给攻击者一个模仿用户的门。
答案 1 :(得分:9)
我会存储用户ID和令牌。当用户回到站点时,将这两个信息与数据库条目之类的持久性进行比较。
至于安全性,只是不要在其中放置任何允许某人修改cookie以获得额外好处的东西。例如,不要存储其用户组或密码。任何可以修改以避免安全的内容都不应存储在cookie中。
答案 2 :(得分:7)
存储他们的UserId和RememberMeToken。当他们登录时记住我检查生成一个新的RememberMeToken(使标记的任何其他机器无效,记住我)。
当他们返回时,通过记住我的令牌查找它们并确保UserId匹配。
答案 3 :(得分:4)
我自己调查持续会话我发现它根本不值得冒安全风险。如果你绝对必须使用它,但是你应该认为这样的会话只是经过了微弱的身份验证,并强制重新登录任何可能对攻击者有价值的东西。
原因当然是包含持久会话的cookie很容易被盗。
4种窃取Cookie的方法(根据@splattne
{{1}}根据其答案):