.htaccess setenvif referer, блокирующий IE6 / 7/8, работающий с IE9 / FF / Chrome / Safari? - PullRequest
0 голосов
/ 21 декабря 2011

У меня неприятная проблема, когда я ограничиваю трафик веб-приложением, которое я создал с помощью простого метода SetEnvIf Referer в htaccess, а htaccess ошибочно блокирует квалифицированный трафик IE6 / 7/8 только из ОДНОЙ из разрешенных сайтов.

Firefox, Chrome, Safari и IE9 не имеют проблем с входом.

Есть разрешенные домены:

1) трафик, поступающий из того же домена, что и приложение

2) трафик с сайта нашего клиента

3) cnn.com * для тестирования другой третьей стороны.

В случае с CNN.com я использую инструменты браузера, чтобы заменить цель ссылки на экране новой целью: адрес моего веб-приложения.

Я нашел следующее:

Внутренний трафик работает, согласно правилу .htaccess

CNN.com трафик работает

Трафик с сайта клиента не работает в IE6 / 7/8 (9: работает)

Я также создал простой скрипт php, который печатает HTTP_REFERER из $ _SERVER. Я использую тот же метод браузера-инструментов, который вставляет ссылки на сторонние страницы, щелкает их и ищет результаты на моей тестовой странице. Я нашел:

отчеты о внутреннем трафике во всех браузерах

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 голосов
/ 22 декабря 2011

Попробуйте использовать 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]
...