Как надежно идентифицировать сайт - PullRequest
3 голосов
/ 07 декабря 2010

У меня есть файл, на который ссылаются другие суб-сайты.

Файл: http://site.com/file.img

Веб-сайт Ссылка на него <img src="http://site.com/file.img"></img>

веб-сайтB ссылка на него <img src="http://site.com/file.img"></img>

Мне нужно надежно определить, какой из этих веб-сайтов получил доступ к файлу, но я знаю, что $_SERVER['HTTP_REFERER'] может быть подделан.Какими еще способами я могу достоверно подтвердить запрос сайта?По IP, заставить их зарегистрировать IP?Точно сказать не могу.настроить ключ API?Какие есть варианты?

Ответы [ 3 ]

5 голосов
/ 07 декабря 2010

Если веб-сайт только связывает с файлом, сам "веб-сайт" фактически никогда не получит доступ к вашему изображению.Вместо этого клиент , который просматривает сайт, сделает запрос на изображение.

Таким образом, вы зависите от информации, отправленной клиентом, которая полностью находится вне вашего контроля исовсем не надежный.Если у вас есть возможность установить какой-то уникальный файл cookie на клиенте, вы можете каким-то образом использовать его для расширенной идентификации, но даже это не будет надежным.

Нет 100%надежное решение.

2 голосов
/ 07 декабря 2010

Получение реферера - лучшее, что вы можете сделать, не попадая на сложную территорию.

Если вы не возражаете против сложностей, тогда читайте дальше: настройте свой веб-сервер для обслуживания file.img только для веб-сайта A и веб-сайта B, затем потребуйте, чтобы веб-сайт A и веб-сайт B настроили Конфигурация прокси с их стороны, которая будет получать file.img от имени своих посетителей.

Пример:

Посетитель веб-сайта A загружает страницу, содержащую тег изображения, например <img src="http://websiteA.com/file.img"/> (обратите внимание на веб-сайт A, а не на ваш сайт). Клиент запрашивает file.img с WebsiteA.com соответственно. Веб-сайт A настроен на прокси-запросы для пути /file.img к вашему серверу http://site.com/file.img. Ваш сайт подтверждает, что на самом деле это веб-сайт А, который запрашивает изображение, а затем передает его прокси-серверу веб-сайта. Веб-сайт А затем предоставляет его посетителю.

По сути, это создает боль для веб-сайтов A и B, снижает производительность, а также требует дополнительной настройки с вашей стороны. Но я думаю, что это удовлетворит ваше требование.

0 голосов
/ 07 декабря 2010

Посмотрите, как реализована поддержка OpenID, она позволяет одному сайту аутентифицироваться против другого.Спецификация протокола даст подсказку об усилиях и накладных расходах, необходимых для надежной реализации такой схемы.

http://googlecode.blogspot.com/2010/11/googles-sample-openid-relying-party.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...