【问题标题】:Using HTTPS instead of HTTP使用 HTTPS 而不是 HTTP
【发布时间】:2011-12-12 15:04:13
【问题描述】:

我有一个用户必须登录的网站。我想使用 HTTPS,因此与服务器建立安全加密连接以检查用户名和密码。

目前在我的服务器上我有一个名为 httpdocs 的文件夹,这是我的网站的存储位置,我还有一个名为 httpsdocs 的文件夹。

现在正如我所说,我的网站存储在 httpdocs 中,所以逻辑上我会转到 http://website.com

但我发现,如果我转到 https://website.com,我可以安全地连接到存储在 httpdocs 中的页面。

无论如何,我的问题是,每当我转到另一个链接时,我都会失去安全连接(URL 回到 http://)那么我如何保证它的安全呢?我是否必须在 href 中使用完整的 URL,因为这看起来有点蹩脚,而不是仅仅使用 href=page2.php 。

我是这个网站开发领域的新手,但如果对你有帮助的话,我在开发方面经验丰富。

非常感谢您的帮助。

如果有人知道什么好东西,一些基本教程或阅读材料会很棒吗?

再次感谢。

【问题讨论】:

  • 您可能正在使用绝对 url 或在您的网站中使用一个变量(无论它是用什么语言编写的)来保存您网站的“基本 url”。您需要发布一些代码/html,或者可能是指向您网站的链接以获得更好的答案。
  • 我没有绝对 URL,我对此保持清醒。那是我的问题,如果我使用绝对的例子mysite.com/page3.php 它将是安全的,但我不知道如何使用相对链接来做到这一点。有什么我可以改变的服务器端,比如一个值或类似的东西?我在我的服务器上使用 CentOS
  • 不,使用 href="page3.php" 将使用您使用的任何协议 - 这可能是 .htaccess 问题吗?
  • 好吧,我已经设法让它留在协议中.....有人认为他们应该使用绝对 URL(我讨厌接管其他人的工作)仍然不知道如何设置站点,以便在您输入域时打开 https。非常感谢您的帮助。
  • 查看我对您问题的回答。

标签: http ssl https


【解决方案1】:

要在 cmets 中回答您的问题,您应该使用 mod_rewrite(假设已启用):

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R,L]

这会将任何网页发送到 https。

【讨论】:

  • 不是一个安全的解决方案,因为如果每个链接都使用不安全的 HTTP 访问,然后被重定向到安全的 HTTPS,那么在每次点击和重定向之间,您几乎都容易受到就像您在 HTTP 中完成所有通信一样的攻击。具体来说,中间人攻击可能会发送重定向以外的其他内容,或者会话劫持或窃听通过 cookie、查询参数或发布数据发送的敏感数据。正确的解决方案是首先消除 HTTP 流量。
  • 我不知道该怎么做? @rsp
【解决方案2】:

不要在 url 中使用http://foo.com/path,而是使用//foo.com/path(或者,更好的是,如果您留在同一台服务器上,请使用/path - 它确实有效)。做完整的网址会带来冗余和脆弱性。避免它。

【讨论】:

    【解决方案3】:

    查看 HTTP 严格传输安全 (HSTS)https://www.owasp.org/index.php/HTTP_Strict_Transport_Security

    基本上,您可以通过将此标头添加到安全站点的配置中来强制浏览器 (unless it's IE<12) 始终使用 HTTPS:

    Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    

    这也可以与非安全/HTTP 站点配置的 301(永久)重定向结合使用,也可以与上述站点上的 outlined 结合使用。

    另外/或者,您可以在“website.com”页面上设置base href,方法是在&lt;head&gt; 标签的顶部添加类似这样的内容:

    <base href="https://website.com/">
    

    这将设置页面上的所有相对 URL(包括链接、样式表、脚本、图像等)以使用 HTTPS 站点的根作为其基础。但是,根据您网站的结构和大小,您需要验证每个页面的基本 href 和/或页面中的 url 是否包含任何必要的路径信息(即子目录)。否则,http://website.com/some/directory/page.html 上指向“otherpage.html”的链接将指向 http://website.com/otherpage.html 而不是 http://website.com/some/directory/otherpage.html。在这种情况下,您需要“http://website.com/some/directory/”的基本 href 或链接中的相对 url 应该指向“/some/directory/page.html”或“some/directory/page.html”(没有斜杠在这种情况下需要)。

    【讨论】:

      猜你喜欢
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 2011-05-03
      • 2021-07-14
      • 1970-01-01
      • 2013-11-13
      • 1970-01-01
      相关资源
      最近更新 更多