.htaccess setenvif referer阻止IE6 / 7/8,使用IE9 / FF / Chrome / Safari?

时间:2011-12-21 18:36:22

标签: internet-explorer .htaccess internet-explorer-8 referrer

我有一个令人沮丧的问题,我限制流量到我在htaccess中使用简单的SetEnvIf Referer方法构建的Web应用程序,并且htaccess错误地阻止来自'允许的一个'的合格的IE6 / 7/8流量'网站。

Firefox,Chrome,Safari和IE9都没问题。

允许使用域名:

1)来自与应用程序相同的域的流量

2)来自客户网站的流量

3)cnn.com *为了测试另一个第三方。

对于CNN.com的情况,我使用浏览器工具用新目标替换屏幕上链接的目标:我的网络应用程序地址。

我发现了以下内容:

内部流量工作,按.htaccess规则

CNN.com流量工作

来自客户网站的流量在IE6 / 7/8中无效(9:工作)

我还构建了一个简单的php脚本,它打印来自$ _SERVER的HTTP_REFERER。我使用相同的浏览器工具方法在第三方页面上插入链接,单击它们,并在我的测试页面上查找结果。我发现:

在所有浏览器中正确报告内部流量

cnn.com在所有浏览器中正确报告流量

第三方/客户网站没有通过IE(8)发送推荐人。 IE9可以工作。

htaccess的:

SetEnvIf Referer samedomain\.com intra_site_referral=1
SetEnvIf Referer addressthatdoesntwork\.org intra_site_referral=1
SetEnvIf Referer another3rdpartyaddressthatworks\.org intra_site_referral=1
#SetEnvIfNoCase Referer "^$" intra_site_referral=0
<FilesMatch "\.(html|js|css|jpg)$">
  Order Allow,Deny
  Allow from env=intra_site_referral
</FilesMatch>

ErrorDocument 403 /restricted.html

我的问题:

我已经用尽了所有可能的错误吗?

我可以断定客户的推荐人网站/服务器报告有问题吗?

在你告诉我htaccess引用者不是'安全'之前,引用者可能是伪造的: 这种保护方法并不重要。这仅仅是为了让应用程序的受众在某种程度上仅限于内部团队和客户的受众。

感谢您阅读..

1 个答案:

答案 0 :(得分:0)

尝试使用mod_rewrite,如下所示:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !samedomain\.com [NC]
RewriteCond %{HTTP_REFERER} !addressthatdoesntwork\.org [NC]
RewriteCond %{HTTP_REFERER} !another3rdpartyaddressthatworks\.org [NC]
RewriteRule \.(html|js|css|jpg)$  - [F]