【问题标题】:Http to Https htaccess Redirect Breaks SSL SecurityHttp 到 Https htaccess 重定向破坏 SSL 安全性
【发布时间】:2011-12-08 18:51:07
【问题描述】:

我有以下 .htaccess 文件,它可以将 HTTP 页面重定向到 HTTPS,这是可以做到的——但是,它破坏了 Firefox 和 IE 中的安全性。它与代码的#FORCE HTTP 部分有一些东西,因为当我删除该部分并只保留#FORCE HTTPS 部分时,安全性在所有浏览器中都可以正常工作。

我可以看出正在发生一些事情,因为在页面加载时,它会显示经过验证的锁定符号一瞬间,然后它就完全消失了。我的意思是完全;它甚至不显示坏掉的锁图标。

请注意,执行此操作时 url 仍然是 https://。因此,即使我手动输入 https://,它也会这样做。

# FORCE HTTP
RewriteCond %{REQUEST_URI} !^(.*)/(donate|debit)/?$
RewriteCond %{REQUEST_URI} !\.(css|js|png|gif|etc|jpeg) [NC]
RewriteCond %{ENV:HTTPS} on [NC]
RewriteRule ^(.*)$ http://www.domain.org/$1 [R=301,NC,L]

# FORCE HTTPS
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteCond %{REQUEST_URI} ^(.*)/(donate|debit)/?$
RewriteRule ^(.*)$ https://www.domain.org/$1 [R=301,NC,L]

【问题讨论】:

  • 如果您捕获 HTTP 流量,例如使用 Fiddler,是否有任何 301 重定向,如果有,适用于哪些资源?
  • 如果你只是注释掉会发生什么: RewriteCond %{REQUEST_URI} !\.(css|js|png|gif|etc|jpeg) [NC] 我想知道是否正在加载不安全的资源安全页面,这可能会导致问题。同样在您的 html 中,标题中是否有任何 标记?
  • 我在 Fiddler 中看不到任何 301。一切都是通过 443 的 HTTPS 或 HTTP 隧道。RewriteCond %{REQUEST_URI} !\.(css|js|png|gif|etc|jpeg) [NC] 代码保护 HTTPS 页面不使其资源更改为 HTTP。
  • 我知道重定向的 HTTP 部分是罪魁祸首,但是......只是不知道在哪里或如何。
  • 如果在安全页面中,您从不安全 (http) 连接加载 javascript、css 或图像,浏览器将移除挂锁。这是因为并非所有流量都是安全的,信息可能会泄漏。我的猜测是您有一些与您的规则不匹配的 .jpg 文件,因为它只匹配 .jpeg 文件。

标签: http .htaccess mod-rewrite https


【解决方案1】:

写(记住L

# don't do anything for images/css/js (leave protocol as is)
RewriteRule \.(gif|jpe?g|png|ico|css|js)$ - [NC,L]

#FORCE HTTP 之前

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 2017-07-18
    • 2012-11-02
    • 2018-08-25
    • 1970-01-01
    相关资源
    最近更新 更多