HTTP重定向到HTTPS风险捕获密码吗?

时间:2016-12-04 10:35:31

标签: security http ssl nginx https

我在NGINX中设置了http-https重定向配置:

server {
      listen         80;
      server_name    localhost;
      return         301 https://$server_name$request_uri;
}

我的问题是:从用户最初访问我的应用程序的登录页面到发布他的用户名+密码,在重定向到HTTPS之前通过HTTP清除凭据的时间是否存在?

1 个答案:

答案 0 :(得分:1)

这取决于您的登录表单(它应该始终只发布到https网址),但根据此信息,我认为不是,当按预期使用时,密码总是超过https

但是,您可能需要注意一些事情并添加更多保护(深度防御),因为攻击的重点是让事情不按预期进行。 :)

SSL剥离

攻击者可能能够从用户的角度降低与http的连接,而攻击者自己则与服务器保持安全连接。请注意,即使服务器甚至没有响应普通的http,这也会起作用。请参阅this videothis link(以及其他许多内容)。解决方案是HSTS(见下文)。

攻击者注入普通的http请求

如果攻击者可以以任何方式将普通的http请求注入到通过普通http发送凭据的客户端浏览器中,那么这些凭据将不受保护。这适用于发布的用户名/密码,但也适用于会话cookie,这相当于会话期间的用户凭据。因此,这意味着如果攻击者可以插入带有src="http://yoursite.com"的图像,则会话cookie将以明文形式发送。响应将根据您的nginx设置进行重定向,但为时已晚。始终将会话cookie设置为secure可以解决此问题(但不是另一个关于发布凭据的问题,可以通过HSTS进行缓解)。

HSTS

您的网站应该有一个Strict-Transport-Security响应标头,这样一旦浏览器有机会与服务器通话而没有中间人攻击者删除标头,它将记得使用https甚至如果用户没有在网址栏中明确指定它。

Strict-Transport-Security: max-age=31536000; includeSubDomains

有关HSTS的更多信息,请here