2009-06-01 4 views
2

Мне нужно убедиться, что моя веб-страница всегда находится в пределах iframe, принадлежащей третьей стороне. Эта третья сторона ссылается на нашу целевую страницу, используя src = "../ index.php".HTTP Referrer Gotchas?

Теперь мой вопрос: если я использую referrer, чтобы убедиться, что страница была запрошена либо мной, либо третьим лицом, и если не принудительно перезагрузить сайт третьей стороны, есть ли какие-то большие ошибки, которые я должен понимаете?

Например, существуют ли определенные общие браузеры, которые не соответствуют правилам реферера?

спасибо.

ответ

4

Рефереры не требуется. Если браузер не предоставит его, вы попадете в бесконечный цикл переадресации. Referrer эффективно «добровольный», как файлы cookie, java и javascript.

Хотя. Вы можете сохранить журнал IP & время последнего перенаправления. Обрежьте журналы на что-нибудь более 5 минут и никогда не перенаправляйте более одного раза в 5 минут. Вы должны поймать 99,9% пользователей, но избегайте бесконечного цикла перенаправления для остальных. Журнал не может полагаться на что-либо в браузере (это исходная проблема), поэтому нет cookie и сеанса. Достаточно простая таблица базы данных из двух столбцов.

+0

Dang. И спасибо. –

5

Вы не можете использовать referrer для «обеспечения», чтобы веб-страница всегда вызывалась из другого места из-за referrer spoofing.

+0

Правильно. Хотя обнаружение реферера не является гарантией 100%, оно будет работать для случайных пользователей. Если вас не волнует, что у вас нечетные выродки или два, это должно быть достаточно. –

1

Единственный способ вы могли бы сделать это непосредственно санкционировать запрос из-за манипуляций ссылающейся ..

Вы можете ограничить запросы на набор IP-адресов, если вы хотите быть слабым, или требовать, чтобы клиент/система включает в себя файл cookie для проверки подлинности для запросов, указанных в iframe.

Good Luck

0

Помните, что Internet Explorer (все версии), в частности, опускает HTTP REFERRER всякий раз, когда пользователь переходит к ссылке в результате JavaScript. (bug report)

например.

function doSomething(url){ 
    //save some data to the session 
    //... 
    location.href = url;//IE will NOT pass the HTTP REFERRER on this link 
} 
7

Кроме того, это REFERER, потому что каким-то образом с ошибками в спецификации. Это был мой самый первый REFERER gotcha.

1

Даже хорошо известные форматы могут быть изменены ...

Google, видимо, изменил свой реферер URL. 14 апреля 2009 г., An upcoming change to Google.com search referrals; Google Analytics unaffected:

Начиная с этой недели, вы можете начать просмотр нового формата URL-адреса для посетителей, поступающих с страниц результатов поиска Google.До сих пор, обычно ссылающейся за клики по результатам поиска для термина «цветы», к примеру, было бы что-то вроде этого:

 http://www.google.com/search?hl=en&q=flowers&btnG=Google+Search

Теперь вы начнете видеть некоторые ссылающейся строки, которые выглядят следующим образом:

 http://www.google.com/url? 
    sa=t&source=web&ct=res&cd=7 
    &url=http%3A%2F%2Fwww.example.com%2Fmypage.htm 
    &ei=0SjdSa-1N5O8M_qW8dQN&rct=j 
    &q=flowers 
    &usg=AFQjCNHJXSUh7Vw7oubPaO3tZOzz-F-u_w 
    &sig2=X8uCFh6IoPtnwmvGMULQfw

(Смотри также Google is changing its referrer URLs from /search into /url. Any known issues?)

Смежные вопросы