基于cookie的Web身份验证的一些最佳做法是什么?


11

我正在使用CGI和Python进行小型项目(可伸缩性不是问题,它必须是一个非常简单的系统。)

我当时正在考虑使用Cookie实施身份验证,并且想知道是否存在任何已建立的最佳实践。

用户成功通过身份验证后,我想使用Cookie来确定谁登录。根据最佳做法,应在此类Cookie中存储什么?

Answers:


12

最佳情况:与您需要的所有其他信息相关的单个ID,该ID又存储在数据库中。

有时在其中放置一些其他信息是有意义的,但很少见。您总是需要问自己为什么,至少五次

SSL将保护您的用户免遭会话劫持,但是即使如此,也永远不要将未加密的敏感信息存储在cookie中。本质上,它以纯文本格式存储在硬盘驱动器上。

最后,最重要的是,保护您的用户免受XSS和CSRF攻击

XSS保护通常很简单,只要小心在其中包含Java脚本,因为在不知情的情况下,可能会更改另一台服务器上的Java脚本,并且该Java脚本可以访问cookie数据。因此,如果您使用Evil Corp的内容交付网络来提供jQuery脚本,则他们可以突然添加代码以向其发送用户的Cookie。你不会知道的 您的用户不会知道。

您可以从自己的服务器上下载脚本并提供服务,也可以使用信誉良好的CDN,例如Google或Yahoo。

CSRF保护通常是通过在表单的隐藏字段中包含一个随机值来完成的。该值将保留在会话中,以便在重新提交表单时,可以验证它来自同一台计算机。

现在,大多数Web框架都有非常简单的技术来包含该令牌。


3
  • 使用securehttpOnly标志。
  • 对会话cookie数据进行编码,并使用MAC对已编码的数据进行加密签名。每次都要在服务器上检查签名,然后再对会话cookie数据进行解码。(默认情况下,Rails会这样做。)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.