这应该很快...这是我当前的 .htaccess 文件:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我需要做的是确保如果http://www.mydomain.com/cart/
达到了,需要强制HTTPS...所以/cart/
以及里面的任何东西/cart/
一旦请求发送至http://www.mydomain.com/cart/
,如果请求中有任何敏感数据,那就太晚了。强行把它打破!至少,它会告诉您您的链接有问题。之前的答案中有更多详细信息:
- https://stackoverflow.com/a/8765067/372643
- https://stackoverflow.com/a/8964190/372643
[...] 当请求到达服务器时,
太晚了。如果存在 MITM,则他已完成攻击(或部分攻击)
它)在您收到请求之前。
到那时你能做的最好的事情就是回复而不包含任何有用的内容。在
在这种情况下,重定向(使用 301 或 302 以及 Location 标头)
可能是合适的。然而,如果用户(或
即使您作为开发人员)也会忽略警告(在这种情况下,
浏览器几乎会遵循重定向并重试请求
透明地)。
因此,我建议返回 404 状态:
-
http://yoursite/
and https://yoursite/
实际上是两个不同的站点。没有理由期望所有内容都是 1:1 映射
URI 空间中的资源从一个空间到另一个空间(就在同一个空间中)
方式,因为你可以有一个完全不同的层次结构ftp://yoursite/
).
- 更重要的是,这是一个应该在上游处理的问题:引导用户使用此资源的链接
http://
应视为已损坏。不要让它自动工作。
不应该存在的资源出现 404 状态是没有问题的。在
另外,当出现错误时返回错误消息是好的:
它会迫使你(或者至少提醒你)作为开发人员,你
需要修复导致此问题的页面/表单/链接。
EDIT:(例子)
假设你有http://example.com/
,网站的非安全部分,允许用户浏览项目。他们在该阶段尚未登录,因此可以通过纯 HTTP 进行登录。
现在,是购物车/付款时间。您需要 HTTPS。您将用户发送至https://example.com/cart/
。如果将用户发送到购物车部分的链接之一使用纯 HTTP(即http://example.com/cart/
),这是一个开发错误。它不应该在那里。当您认为自己将被发送到时,使流程中断https://example.com/cart/
允许开发人员看到它(并且一旦修复,用户就永远不会遇到问题)。
如果它只是指向您网站的 HTTPS 部分(通常是通过某处链接进行 HTTP GET),则风险不一定那么大。
自动重定向变得更加危险的是当它们隐藏了更大的问题时。
例如,您正在https://example.com/cart/creditcarddetails
并且您已经填写了一些实际上应该仅通过 SSL 保留的信息。然而,开发商犯了一个错误,并明确表示http://
链接在表单中使用。此外,开发人员(毕竟是用户/人类)在 Firefox 中点击了“不要再显示此消息”,当它显示“警告:您将从安全页面转到非安全页面”时(顺便说一句,不幸的是,Firefox 会发出事后警告:当它向用户显示该消息时,它已经发出了不安全的请求)。现在,带有敏感数据的 GET/POST 请求首先发送到不正确的纯文本http://
链接和自动重写告诉浏览器再次尝试请求https://
。它看起来很好,因为就用户而言,这一切都发生在不到一秒的时间内。然而,事实并非如此:敏感数据是明文发送的。
使仅应通过 HTTPS 传输的纯 HTTP 部分不做任何有用的事情实际上可以帮助您更清楚地看到问题所在。由于如果链接正确实现,用户无论如何都不会到达那里,所以这对他们来说并不是真正的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)