Как обеспечить, чтобы http-запросы исходили из определенного места? - PullRequest
4 голосов
/ 14 июля 2009

HTTP Referer - это способ, которым я сейчас занимаюсь. Поскольку каждый, кто использовал этот метод, знает, что он не на 100% точен, поскольку заголовок Referer является необязательным и может быть изменен.

Глядя на как обеспечить доступ к моему веб-сервису только из моего кода Я все еще не уверен, как это сделать в минимальной степени.

Ситуация:

Реклама на чужом сайте. Использование iFrame, чтобы я мог изменить содержимое / функцию по желанию. Я плачу $ x.xx за каждый раз, когда действие завершено. Поэтому я должен убедиться, что действие завершается с того места, где я сказал, что оно разрешено к завершению.

Что я пытаюсь предотвратить:

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

Пытаясь предотвратить вышесказанное, разрешите следующее:

Я не против, если веб-мастер / владелец сайта, которому я плачу наличными за «завершенные действия», размещает код на других сайтах - очевидно, это хорошо. Намного больше покрытия, владелец сайта получает больше денег, и я выполняю больше действий, что приносит мне больше денег.

Вопрос

Что я могу заставить другую сторону сделать так, чтобы я знал, что все запросы, приходящие на мою веб-страницу, поступают от другой стороны, с которой у меня есть соглашение, а не случайно.

Спасибо:)

информационное приложение

сайт других сторон имеет iFrame. iFrame отображает мою html / js / php страницу, которая находится на одном из моих доменов. Эта страница использует ajax-запросы для взаимодействия с реальным веб-сервисом, который является приложением ruby ​​/ sinatra. У меня есть много разных страниц, которые вписываются в внешний вид сайта других участников.


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

Однако я не уверен, сможет ли другая сторона установить cookie для домена, обслуживаемого в iFrame, - на самом деле я почти уверен, что это невозможно.

Теперь, чтобы обойти это ограничение, я мог бы добавить на страницу сценарий как часть iFrame, который мог бы установить cookie.

Хорошо, приведенные выше идеи обобщены:

  • Сервер OtherParty отправляет запрос на мой сервер, получает ответ.
  • отображает страницу с таким ответом как параметр для
  • мой скрипт устанавливает cookie
  • как скрипт до iFrame, скрипт загружается первым
  • iFrame загружается со страницей, так как для этого доменного файла cookie задан файл cookie, установленный до отправки также
  • бинго, запрос подтвержден законным

Звучит нормально?

Кстати, мой инструмент, над которым я хочу выполнить действие, работает только в том случае, если JS включен, поэтому ...

1 Ответ

3 голосов
/ 01 ноября 2009

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

Это также дает вам преимущество, заключающееся в том, что вам нужно просто выполнить первоначальный обмен ключами в автономном режиме без необходимости, чтобы ваш партнер делал дополнительные запросы к серверу перед вставкой iframe.

...