我在html页面上放了什么,以便浏览器知道通过ssl访问它?

时间:2012-10-20 23:15:03

标签: html ssl

我的网络服务器上安装了证书。如果我只想通过ssl访问一个页面,我需要在页面上标记什么,还是在其他地方另外设置?

4 个答案:

答案 0 :(得分:2)

以下是如何在PHP中执行此操作的示例

if($_SERVER['SERVER_PORT'] != 443) {
   header("Location: https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
   exit;
}

以下是如何在JavaScript中执行此操作:

<script type="text/javascript">
    if (window.location.protocol != 'https:') {
        window.location.href = 'https://' + window.location.host + window.location.pathname;
    }
</script>

要仅使用HTML,您可以执行以下操作:

<meta http-equiv="refresh" content="0;url=https://www.yoursite.com" /> 

我相信你也可以直接在Apache配置中完成。

答案 1 :(得分:2)

简而言之,唯一可靠的方法是仅使用https://网址链接到它。理想情况下,您应确保您的用户希望使用HTTPS,并确保他们检查它是否正确使用(即他们不会忽略浏览器警告)。

在普通HTTP请求之后在服务器上强制执行的任何操作都可能容易受到MITM攻击。这包括通过mod_rewrite重定向方法,PHP标头(Location标头),JavaScript(提取window.location),......,当然还有https://的初始投放链接本身,如果它是从通过普通HTTP提供的页面获得的。即使是SSLRequireSSL之类的拒绝访问,只有在收到普通的HTTP请求后才有效。

使用这些重定向技术并不是一个坏主意,如果只是为了让你的用户习惯他们正在使用HTTPS的事实(他们可能会发现奇怪的事情,如果在另一个场合他们不是,这可能表明MITM他们应该至少保护他们免受被动窃听攻击。

更一般地说,即使您使用相同的主机名(可能是相同的服务器软件)提供http://www.example.comhttps://www.example.com,它们在技术上也是两个不同的主机(例如Apache Httpd中的虚拟主机)术语)和托管在其中的资源不需要托管在另一个上。只需不要在普通HTTP主机上通过HTTPS为您只需要的页面提供服务。我还建议使用重定向(至少在开发阶段),以便在您没有使用HTTPS链接到这些页面时它会中断:这将有助于检测潜在的混合内容问题。自动重定向主要用于直接在浏览器中输入地址的用户。

您可以考虑将您的网站置于预先加载的HTTP Strict Transport Security列表中(或者至少使用HSTS,这会使浏览器记住仅在其至少工作一次后才使用HTTPS),但这将适用对整个主持人。

您可以在Security.SEWebmasters.SE上找到这些答案的更多详细信息。

答案 2 :(得分:0)

如果服务器配置正确,您需要使用https://链接到该页面。

要检查并确保没有访问没有https的页面,您可以使用php查找当前的确切URL并检查并查看其https,如果不是,则执行简单的重定向到https:// [URL] < / p>

答案 3 :(得分:0)

如果服务器配置正确,则无需在页面上添加任何内容。只需在Apache配置中为具有SSLRequireSSL指令的页面定义一个Location块。