强制https整个网站,而不redirecthttp到https

在我研究如何让整个网站https的时候,进行了大量的讨论。 最多的答案是将httpredirect到https(.htaccess文件),这是不好的,因为做同样的工作两次(两个请求)是不好的。 此外,“中间人”首先接受http,并且我希望我的网站直接通过https访问。 有没有另一种方法来使您的整个网站https,以及如何做到这一点? 例如,当用户inputexample.com时,该example.com会自动转到https,而不是先从http或其他任何地方redirect?

不可以。您不能神奇地使访问者的浏览器select正确的协议。 redirect是做到这一点的方法。

http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security允许您的服务器指示只能通过HTTPS访问域。 这只适用于后续请求,所以会有一个初始HTTP负载,但即使某人明确键入HTTP,未来的请求也会加载HTTPS。

IE目前还不支持,但所有其他专业。

正如其他人所说,你不能强迫用户select正确的协议。 但是当用户尝试使用HTTP时,你应该怎么做? redirect也是不够的,因为坐在你和客户之间的攻击者可以拦截redirect,所以客户端永远不会看到它。 客户端将继续发送普通的HTTP,攻击者将从服务器上剥离 SSL层( SSL剥离攻击 )。

唯一可以防止的方法是根本不提供HTTP服务 。 不要在80端口上回答,除非是为纯文本页面服务,指导用户使用HTTPS再次尝试(但提供攻击者可以操纵的链接)。 这将强制用户在浏览器中键入https:// ,这样他们将启动与SSL的连接并阻止MITM攻击。

不完全如此: 如何使用DNS /主机名或其他方式parsing到特定的IP:端口

有一种方法,但大多数浏览器不执行rfc2782。

ceejayoz有最好的答案,以防止这里特别提到的攻击,但我也想指出,这里有很多人失踪了,这基本上是HTTP的另一部分已经搞清楚了。 你想做一个永久的301redirect。 这告诉客户进一步请求新的地址。 所以是的,如果有人input错误的URL,他们会提出2个请求,但是,将来,一个好的客户端应该检测到该URL的请求,并提出正确的请求,以防止更多的浪费的请求。 问题是,这只是为了确切的url。 HSTS通过也表示“在接下来的n秒钟内也不允许来自该域的任何非安全连接”来改进该scheme。

用户不应在不安全的地点访问敏感网站。 他们特别不应该在不安全的地点为他们报名。 这些是基本的用户安全原则,应该像“不要打开来自不可信来源的附件”那样教导。 这对于防止从未被访问过的站点的MiM攻击确实是最好的答案。

作为一个侧面说明,一些浏览器通过也说某些已知的站点总是使用HSTS来改进。 不幸的是,你不能轻易地将自己添加到这个列表。

详细阅读: http : //coderrr.wordpress.com/2010/12/27/canonical-redirect-pitfalls-with-http-strict-transport-security-and-some-solutions/

http://dev.chromium.org/sts