【发布时间】:2011-11-04 14:21:12
【问题描述】:
我在整个网站上启用了 ssl,但我需要强制除 login.php 和 register.php 之外的所有页面到 http://
所以基本上我只需要 login.php 和 register.php 页面是 https://protocol-ed。
现在我有使 login.php 页面 https:// 加密的脚本,但我不明白如何将 register.php 添加到此代码
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# Turn SSL on for payments
RewriteCond %{HTTPS} off
RewriteCond %{SCRIPT_FILENAME} \/login\.php [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# Turn SSL off everything but payments
RewriteCond %{HTTPS} on
RewriteCond %{SCRIPT_FILENAME} !\/login\.php [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
关于如何编辑/制作此代码以将 login.php 和 register.php 页面设置为 https:// 并将所有其他页面设置为 http://
的任何想法谢谢
【问题讨论】:
-
你为什么要想要禁止SSL? (另外,
login.php似乎是一个用于“付款”的非正统 URL)。 -
1) 你的方法是错误的(整个想法); 2)即使您在这里实现了您的要求(或其他人为您执行此操作),您很可能会在安全页面上提供图像/css/js 时遇到问题(浏览器警告)——因为您的整个方法存在缺陷; 3)你第三次问几乎同样的问题:stackoverflow.com/questions/7189484/…; stackoverflow.com/questions/7202472/…
-
@LazyOne 是的,我猜我提出了 3 个问题,我的方法有什么问题?我的意思是它现在是我希望它在 login.php 页面上的工作方式,我唯一需要的是添加 register.php 页面,因此两者都是 https:// 并且网站的其余部分保持 http:// (用于加载时间,并且外部链接原因)
-
1) 那么帐户页面呢——它们不会受到保护..但它们通常包含私人信息(地址、出生日期等——我不知道你的网站是做什么的,所以不能推测这一点)。为什么如此重要的页面(如果存在)不应该受到 HTTPS 的保护?
-
2) 假设您在
/login.php页面上——按照您当前的逻辑,所有图像/css/js 都应通过不安全的 HTTP 提供。如果你想保护页面,那么这个页面上的所有内容也应该受到保护,否则它很容易受到中间人类型的攻击(有人拦截你的 css/js 并在下载这些时注入错误代码用户页面 - 用户不会注意到任何东西)。此外,某些浏览器(例如 Internet Explorer)会显示警告,而另一些浏览器会阻止在安全页面上显示非安全内容。