【问题标题】:Force HTTP AUTH over HTTPS通过 HTTPS 强制 HTTP AUTH
【发布时间】:2017-04-27 00:52:39
【问题描述】:

我有一个我想要保护的网站目录。我正在使用 .htaccess 文件来强制执行 HTTP AUTH。我想强制通过 HTTPS 完成此 HTTP AUTH。

在这里查看有关堆栈溢出的各种解决方案是我的重点:

我在“top_secret”目录中有以下 .htaccess 文件:

SSLRequireSSL
ErrorDocument 403 /rd.php
AuthType Basic
AuthName "Secure Page"
AuthUserFile "/home/usr/.htpasswds/public_html/top_secret/passwd"
Require valid-user

然后我的根目录中有“rd.php”:

<?php
$path = "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
if ( $_SERVER['SERVER_PORT'] == 80) {
    header("Status: 302 Moved\n");
    header("Location: ".$path."\n\n");
}
else {
    header( "Content-type: text/html\n\n");
    echo '?';
}
?>

这在我的台式计算机上运行良好,但是当我在 safari 中从我的 iphone 浏览到 top_secret 目录(到 HTTPS 或 HTTP 地址)时,我只得到一个问号返回。所以由于某种原因,我的 php 文件的 else 条件正在输出。

我不完全确定这意味着什么以及如何解决,任何帮助将不胜感激

【问题讨论】:

  • 我已经回答了你的问题。如果您对我的回答不满意,能否告诉我原因,我会更新或解决您的疑虑?谢谢。
  • 你只是要浪费你的赏金吗?我愿意为您更新我的答案,但如果没有您的反馈,我无法做到这一点。
  • 假设 safari 浏览器由于 AuthType Basic 的错误行为而通过 HTTPS 从 Require 指令中获取 403。

标签: apache .htaccess mod-rewrite url-rewriting http-authentication


【解决方案1】:

建议不要在 PHP 中执行此操作,而是在 Web 服务器层实现它。将此添加到您的 .htaccess 文件的顶部:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

并删除您的 PHP 重定向代码。

但这仍然需要在发出重定向之前登录,详细信息传输不安全。您真正需要的是 Apache 中的两个 &lt;VirtualHost&gt; 块。一种用于端口 80,它将对您的目录的请求重定向到 HTTPS,另一种用于配置了 HTTP AUTH 的端口 443。

更新

此外,尝试在用作 403 错误文档的文档中发出 302 重定向是没有意义的,因为已经设置了状态代码并且该文档仅用于生成该响应的正文,所以它现在不能将响应代码更改为 302,因为它已经设置为 403。我上面概述的方法将起作用,或者您可以简单地拒绝 HTTP 请求并仅为该目录提供 HTTPS。

【讨论】:

  • 嗨 SuperDuperApps,很多人对我迟到的回复表示歉意,并感谢您在此问题上的帮助。这是一个不错的选择,但正如您所说,它需要 2x 身份验证,其中一个以明文形式发送(我想避免)。此外,当我运行它时,我得到一个代码 500 服务器错误。您是否有机会向我指出进一步的文档,详细说明我将如何按照您的描述设置虚拟主机?
  • 对于 500 内部服务器错误,请检查您的错误日志以了解问题所在。对于在 Apache 中设置虚拟主机,有documentation here。这取决于您的设置,您需要如何操作。如果您有任何问题,那么您可以打开一个新问题并发布您的一些配置。
【解决方案2】:

如果您使用 beanstalk 或任何负载均衡器,那么您可以在该级别设置重定向。否则编写@SuperDuperApps 建议的.htaccess 配置。这应该是一个评论,但我没有足够的代表;-)

【讨论】:

  • 您可能应该在您所指的帖子下方将其写为评论。
  • 我只是想帮忙,我没有评论的声誉,你为什么不投票?我没说错吧?我浪费时间回答你?你?
  • 啊,没有看到你没有足够的声誉来发表评论 - 很好,如果你编辑你的帖子,我会删除反对票:)
  • 现在你几乎有足够的代表了 :-) 我对此投了赞成票,@JohnGallagher 我编辑了这篇文章,所以也许你现在可以这样做。
猜你喜欢
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 2018-10-26
  • 2015-11-13
  • 2015-07-20
  • 1970-01-01
  • 2011-09-14
相关资源
最近更新 更多