0

使用 Apache 和 PHP,了解它并强制使用 HTTPS 的最佳方式是什么?

我在 phpinFO() 中搜索了 $_SERVER 变量,但没有发现任何帮助。

编辑:感谢您的回答和建议!我不能在服务器级别强制它,因为它只用于登录页面。

4

4 回答 4

5

$_SERVER['HTTPS']如果使用 HTTPS,则为非空。但是你最好在网络服务器级别执行 HTTPS,例如

<virtualhost example.com:80>
   redirect permanent https://example.com
</virtualhost>

<virtualhost example.com:443>
   blah blah blah
</virtualhost>
于 2013-02-07T14:38:15.140 回答
2

在 .htaccess 文件中,添加以下内容:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTPS} !=on
  RewriteRule ^/?(.*) https://YOUR_URL/$1 [R,L]
</IfModule>
于 2013-02-07T14:39:08.747 回答
2

此外,请考虑添加 HSTS HTTP 标头。这告诉浏览器甚至不要尝试访问 HTTP 版本,而是直接访问 HTTPS。这可以防止可能的中间人攻击,您的重定向可能会被拦截。

(前提是用户之前访问过该网站,或者您的网站已添加到内置 HSTS 列表中。)

请参阅http://dev.chromium.org/sts了解如何添加到内置列表,以及标题的示例。

于 2013-02-07T14:43:51.233 回答
2

唯一正确的答案是因为您将服务器配置为以这种方式运行。

如果您绝对不知道当请求发送到 PHP 时是通过 HTTP 还是 HTTPS 发送的,那么您的系统是不安全的。

于 2013-02-07T14:45:13.277 回答