[英]Django - sessionid cookie - Is this a security failure?
为了看到这个可能的错误,您需要打开两个浏览器和一些插件来获取/设置cookie。
如果你在django 1.7中创建一个新项目并访问管理站点( /admin
),并在第一个broser中成功登录并获取sessionid
和csrftoken
cookie并将它们设置到第二个浏览器登录页面并设置一个随机用户和密码,您获得CSRF错误,如果您返回浏览器,则表示您已登录。
怎么能避免这个?
我想,你可以通过将sessionid cookie复制到另一个浏览器并导航/admin
来获得相同的结果。 您不需要csrftoken
来重现此问题。 它被称为sessionid窃取,我知道所有框架都容易受到此类攻击。
要避免它,请设置SESSION_COOKIE_SECURE = True(默认为False)以保护您的sessionid cookie免受中间人攻击。 您还需要在生产服务器上安装ssl证书。 然后将其配置为将所有http://
请求重定向到https://
。 https中的S代表安全 ,这意味着客户端和服务器之间的所有流量都是加密的,客户端和服务器之间没有任何人(客户端的ISP,服务器的托管服务提供商,代理等)可以读取任何数据。 包括会话cookie值。
并使用SESSION_COOKIE_HTTPONLY = True(默认值)来保护会话cookie不被XSS窃取。 HTTPONLY意味着此cookie将随每个http请求一起发送,但无法通过javascript从客户端的浏览器访问。 因此,如果某些恶意软件javascript设法在客户端浏览器中运行,则无论如何它都无法访问会话cookie。
有关配置安全django服务器的精彩教程,请访问: https : //security.stackexchange.com/a/8970
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.