使用 Apache 和 PHP,了解它并强制使用 HTTPS 的最佳方式是什么?
我在 phpinFO() 中搜索了 $_SERVER 变量,但没有发现任何帮助。
编辑:感谢您的回答和建议!我不能在服务器级别强制它,因为它只用于登录页面。
$_SERVER['HTTPS']
如果使用 HTTPS,则为非空。但是你最好在网络服务器级别执行 HTTPS,例如
<virtualhost example.com:80>
redirect permanent https://example.com
</virtualhost>
<virtualhost example.com:443>
blah blah blah
</virtualhost>
在 .htaccess 文件中,添加以下内容:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://YOUR_URL/$1 [R,L]
</IfModule>
此外,请考虑添加 HSTS HTTP 标头。这告诉浏览器甚至不要尝试访问 HTTP 版本,而是直接访问 HTTPS。这可以防止可能的中间人攻击,您的重定向可能会被拦截。
(前提是用户之前访问过该网站,或者您的网站已添加到内置 HSTS 列表中。)
请参阅http://dev.chromium.org/sts了解如何添加到内置列表,以及标题的示例。
唯一正确的答案是因为您将服务器配置为以这种方式运行。
如果您绝对不知道当请求发送到 PHP 时是通过 HTTP 还是 HTTPS 发送的,那么您的系统是不安全的。