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


Forced HTTPS on osCommerce breaks sessions and logins

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

用于强制HTTP的.htaccess代码

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

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

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

define('HTTP_SERVER', 'https://example.com'); 
define('HTTPS_SERVER', 'https://example.com'); 

您肯定在使用Apache吗?

请在您的.htaccess中尝试此操作。。。

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

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

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

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

  • 如何将所有HTTP请求重定向到HTTPS
  • Tomcat会话管理-url重写和从http到https的切换

会话有可能中断,因为过程中有一个看似不可见的纯HTTP连接,这可能会导致一些与会话相关的数据无法正确传输。如果您使用的是Firefox,打开security.warn_leaving_secure选项(通过about:configURL)来跟踪这类问题可能会很有用。

/includs/configure.php中
将HTTP域修改为具有
https://
这将使所有会话仅保留https。在
/admin/includs/configure.php中执行相同操作
它建立在你应该做的mod_rewrite的其他答案的基础上。

我还将添加HTTP STRICT TRANSPORT SECURITY标头和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>