Можно ли ограничить запрашивающий домен на уровне приложения? - PullRequest
2 голосов
/ 06 декабря 2010

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

Я посмотрел на http://en.wikipedia.org/wiki/List_of_HTTP_header_fields и увидел поле реферера, которое можно использовать, но я понимаю, что заголовки HTTP могут быть подделаны (не так ли?)

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

Любой язык программирования будет работать для ответа. Мне просто любопытно, как это делается.

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

Ответы [ 2 ]

1 голос
/ 06 декабря 2010

HTTP-заголовки, относящиеся к ip-информации, полезны (потому что подделывается только меньшая часть), но не надежны.Обычно веб-приложения используют веб-фреймворки, которые упрощают доступ к ним.

Некоторые способы получения информации об источнике:

  • отправка ip-адреса из сети ip / tcpсам стек: проблема в том, что этот видимый серверу адрес не должен совпадать с адресом реальных клиентов (это может быть прокси-сервер компании, анонимный прокси, большой провайдер ...).
  • HTTP Заголовок X-Forwarded-For . Предполагается, что прокси-серверы устанавливают этот заголовок для решения вышеупомянутой проблемы, но он также может быть поддельным или многие анонимные прокси-серверы вообще его не устанавливают.
  • помимо информации ip-источника вы также можете использовать идентификаторы компьютеров (некоторые используют заголовок агента пользователя . Некоторые сайты, например, хранят идентификаторы этого компьютера и хранят его во флеш-куки, поэтому ониможет повторно идентифицировать вызывающего клиента, чтобы заблокировать его. Но та же история: это ненадежно и может быть сфальсифицировано.

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

HTTP Referer - это совсем другое: он показывает, с какой страницы пришел пользователь. Он включен браузером. Он также ненадежен, посколькусодержимое может быть повреждено, и некоторые клиенты его вообще не включают (я помню, что в нескольких версиях браузера IE пропускается ссылкаERER).

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

Эти типы элементов управления основаны на исходном IP-адресе. По IP-адресу можно определить страну. Для определения IP-адреса требуется доступ к информации протокола низкого уровня (например, из сокета).

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

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