问题描述
我希望在.htaccess文件中有一个动态规则,该规则允许我在HTTPS服务器中将所有cookie(例如Secure和HTTPOnly)设置为HTTP,而在HTTP服务器中,将所有cookie设置为HTTPOnly而不设置Secure标志
我写了一条似乎可行的规则,但是我只在本地主机中以HTTPS和HTTP进行过测试,并且在将其联机到服务器上之前,我想对如何改进该规则进行确认或提出建议。是的,在localhost中,我安装并配置了运行良好的自签名证书,我在VirtualHost中放入了必要的规则,以根据访问服务器的方式使服务器以https和http身份工作。当然,当我在Aruba上有一台由有效SSL证书提供服务的服务器时,本地主机将仅用于开发。最终,我希望所有东西都可以在开发服务器和带有https和http的在线服务器上使用。这是我为自己写的规则。你觉得呢?
这是我的.htaccess文件,用于测试我的规则:
<IfModule mod_headers.c>
# Security Server Settings
Header set X-Content-Type-Options "nosniff"
Header append x-frame-options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
Header unset X-Powered-By
# Over HTTPS set all cookies as httpOnly and Secure
Header edit Set-Cookie ^(.*)$ "$1; httpOnly; secure" "expr=%{HTTPS} == 'on'"
# Over HTTP set all cookies as httpOnly (not Secure)
Header edit Set-Cookie ^(.*)$ "$1; httpOnly" "expr=%{HTTPS} == 'off'"
</IfModule>
<?PHP
session_start();
setcookie(session_name(),session_id(),NULL,'/',NULL);
?>
将Web Developer与FireFox一起使用,我可以看到PHPSESSID会话cookie的状态,如果访问http://localhost/index.PHP,则可以看到cookie设置为HTTPOnly,而如果访问https:// localhost / index .PHP,我看到cookie设置为Secure和HTTPOnly。
最后说明:Apache 2.4.46(64位)/ PHP 7.4.9(64位)/ OpenSSL 1.1.1g
谢谢。
亚历山德罗
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)