我在 NGINX 中设置了 http-https 重定向配置:
server {
listen 80;
server_name localhost;
return 301 https://$server_name$request_uri;
}
我的问题是:从用户最初访问我的应用程序的登录页面到发布他的用户名+密码,是否有任何时候凭证在重定向到 HTTPS 之前会通过 HTTP 清除?
这在某种程度上取决于您的登录表单(它应该始终仅发布到 https url),但根据此信息,我认为不,密码总是通过 https当按预期使用时.
但是,您可能需要注意一些事项并添加更多保护(深度防御),因为攻击的重点是让事情不按预期进行。 :)
SSL 剥离
攻击者可能能够从用户的角度降低与 http 的连接,同时攻击者自己仍保持与服务器的安全连接。请注意,即使服务器在普通 http 上没有响应,这也会起作用。看这个视频 https://www.youtube.com/watch?v=MFol6IMbZ7Y or 这个链接 https://avicoder.me/2016/02/22/SSLstrip-for-newbies/(还有许多其他)。解决方案是 HSTS(见下文)。
攻击者注入纯 http 请求
如果攻击者可以以任何方式将纯 http 请求注入到通过纯 http 发送凭据的客户端浏览器中,则这些凭据将不受保护。这适用于发布的用户名/密码,也适用于会话 cookie,会话 cookie 相当于会话期间的用户凭据。所以这意味着如果攻击者可以插入图像src="http://yoursite.com"
,会话 cookie 将以明文形式发送。响应将根据您的 nginx 设置进行重定向,但为时已晚。始终将您的会话 cookie 设置为secure
解决了这个问题(但没有解决有关发布凭证的另一个问题,可以通过 HSTS 来缓解)。
HSTS
您的网站应该有一个Strict-Transport-Security
响应标头,这样一旦浏览器有机会与服务器通信而中间人攻击者不会删除标头,它就会记住使用 https,即使用户没有在 URL 栏中明确指定它。
Strict-Transport-Security: max-age=31536000; includeSubDomains
有关 HSTS 的更多信息是here https://www.owasp.org/index.php/HTTP_Strict_Transport_Security_Cheat_Sheet.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)