我有一个令人沮丧的问题,我在htaccess中使用一个简单的SetEnvIf Referer方法来限制一个web应用程序的流量,而htaccess错误地阻止了来自一个“允许”站点的合格的IE6/7/8流量。
火狐、Chrome、Safari和IE9都没有问题。
有允许的域:
1)流量来自与应用相同的域
2)来自我们客户网站的流量
3) cnn.com *,用于测试另一个第三方。
对于CNN.com,我使用浏览器工具将屏幕上链接的目标替换为一个新目标:我的web应用程序地址。
我发现了以下内容:
根据.htaccess规则,内部通信正常工作
CNN.com流量工作
来自客户站点的流量在IE6/7/8 (9: works)中不起作用
我还构建了一个简单的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引用是不安全的,引用可以被伪造之前:这种保护方法并不重要。在某种程度上,它的目的只是将应用程序的受众限制为内部团队和我们客户的受众。
感谢你的阅读..
发布于 2011-12-23 03:41:23
尝试像这样使用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]https://stackoverflow.com/questions/8594661
复制相似问题