Как определить, является ли http-запрос браузером или прокси-сервером (или сервером)? - PullRequest
1 голос
/ 22 августа 2011

У меня есть сервер, который принимает HTTP-запрос и возвращает данные JSON.Как мой сервер узнает, поступил ли http-запрос от клиентского браузера, а не с сервера?особенно если трафик может передаваться через прокси-сервер от клиента к другому серверу и вызывать мой сервер.

Я знаю, что могу проверить заголовок http, чтобы узнать user-agent, remote-addr..etc, но это не безопасно,Люди могут подделать заголовок запроса http.

Какие еще уловки я могу сделать, чтобы идентифицировать входящий запрос?

Ответы [ 2 ]

1 голос
/ 22 августа 2011

Нет способа узнать это.«Анонимные прокси» не будут иметь заголовка X-Forwarded-For.Некоторые IRC-серверы будут портить клиенты сканирования, когда они подключаются, ища общие порты прокси-сервера, такие как 8080, 3128 и т. Д.Вы можете взломать такой инструмент, как YAPH , чтобы искать прокси у людей, подключающихся к вам.Но он не получит phpproxy или прокси, работающие на странных портах.

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

0 голосов
/ 22 августа 2011

Если вы сможете проверить заголовки, вы сможете увидеть X-Forwarded-For, который сообщит вам ip «реального» запроса. Законные прокси используют этот заголовок.

Для браузеров вам будет интересен заголовок User-Agent. Популярные браузеры и сканеры будут использовать этот заголовок.

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

...