Php osCommerce上的强制HTTPS中断会话和登录

Php osCommerce上的强制HTTPS中断会话和登录,php,.htaccess,https,oscommerce,Php,.htaccess,Https,Oscommerce,我一直试图在我的osCommerce网站上强制使用HTTPS,而且效果很好。但当它切换到HTTPS时,会话中断,登录根本不起作用 .htaccess用于强制HTTP的代码 你肯定在使用Apache吗 请在.htaccess中尝试此操作 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 我不确定这是否与您的问题直接相关,但我建议您确保站点中的所有表单、链接和L

我一直试图在我的osCommerce网站上强制使用HTTPS,而且效果很好。但当它切换到HTTPS时,会话中断,登录根本不起作用

.htaccess用于强制HTTP的代码
你肯定在使用Apache吗

请在
.htaccess
中尝试此操作

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

我不确定这是否与您的问题直接相关,但我建议您确保站点中的所有表单、链接和
Location
标题都指向使用
https
前缀的URL,如果它们是绝对的

将HTTP请求转换为HTTPS的重写规则只有在保护“入口点”(用户访问的第一个页面)时才真正有用。如果将数据发送到使用
http://
的URL,则不会阻止以明文形式发送数据。事实上,这些重写规则只有在浏览器首先以明文形式发出请求后才会生效(因此,所有标题,包括登录cookie,除非安全cookie,以及所有发布的数据,例如,都将以明文形式发送)

您可能对以下相关问题感兴趣:


会话可能会中断,因为进程中存在一个看似不可见的普通HTTP连接,这可能会导致某些会话相关数据无法正确传输。如果您使用的是Firefox,打开
安全性.warn\u leaving\u secure
选项(通过
about:config
URL)来跟踪这类问题可能会很有用。

在osCommerce站点的所有页面上强制使用HTTPS的方法是使用已在配置中为您设置的内容,而不是让.htaccess来完成这项工作

编辑includes/configure.php文件,并将站点的HTTPS版本放在以下两个位置:

define('HTTP_SERVER', 'https://example.com'); 
define('HTTPS_SERVER', 'https://example.com'); 
在/includes/configure.php中,修改HTTP域使其具有https://这将使所有会话保持仅https。在/admin/includes/configure.php中执行同样的操作 https:// /admin/includes/configure.php 它建立在你应该做的mod_rewrite的其他答案的基础上

我还将添加HTTP严格传输安全性头和XSS保护

<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header unset X-Powered-By
Header unset Server
Header set X-Content-Type-Options "nosniff"
Header set X-XSS-Protection "1; mode=block"
<FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$">
    Header unset X-XSS-Protection
</FilesMatch>
</ifModule>

标头始终设置严格的传输安全性“最大年龄=31536000;包括子域”
割台未设置X供电
标题未设置服务器
标题集X-Content-Type-Options“nosniff”
标题集X-XSS-Protection“1;模式=块”
标题未设置X-XSS-Protection

是的,我正在使用apache,如果我尝试键入以https://.... 然后https似乎可以正常工作,但当它使用htaccess时,似乎都可以正常工作,但当我尝试登录时,会出现登录错误,但如果我删除https强制登录,则登录工作正常,再次出现无效登录错误,OHH是的,我记得提交的用户名和密码也不会被系统检索,当我试图打印它们时,它们看起来是空的。会话中断是因为您在从HTTP切换到HTTPS时丢失了cookie。您需要将会话ID传递到其他地方,例如通过查询参数。请参阅上面的@hakre注释。我刚刚对oscommerce的核心文件进行了一些自定义,使其工作正常。无论如何。谢谢你的努力 /admin/includes/configure.php
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header unset X-Powered-By
Header unset Server
Header set X-Content-Type-Options "nosniff"
Header set X-XSS-Protection "1; mode=block"
<FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$">
    Header unset X-XSS-Protection
</FilesMatch>
</ifModule>