2017-02-22 15 views
0

мой случай прост:Как определить два запроса из одного источника в NodeJS?

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

Если парень попросит мой сервер у Почтмана, или из браузера или из cURL, я хочу идентифицировать этого парня, а затем сделать что-то с этой информацией.

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

Возможно ли это в узле/экспресс?

+0

Как вы определяете происхождение? Айпи адрес? Смотрите: http://stackoverflow.com/questions/12349251/restrict-access-to-node-js-based-http-server-by-ip-address – vossad01

ответ

4

Нет идентификатора uber, который поставляется с веб-запросом, который сообщает вам, кто находится за запросом, независимо от того, как был инициирован запрос (браузер, cURL, Postman, node.js app, приложение PHP и т. Д. ..).

Этот вопрос довольно часто встречается среди новых веб-разработчиков. В конце концов, это сводится к двум вещам:

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

  2. Оцените пользователей, ограниченных пользователем или по IP-адресу, или по какой-либо их комбинации. Если они превышают определенный предел скорости, вы можете замедлить или запретить доступ.

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

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

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

Еще один шаг к этому связан с тем, как создается учетная запись, потому что вы не хотите, чтобы злоумышленник мог запускать скрипт каждые 10 минут, чтобы автоматически создать новую учетную запись. Существует множество схем защиты этого. Наиболее распространенным является просто требование некоторых доказательств того, что человек участвует в создании новой учетной записи (captcha, question/answer и т. Д.), Которые предотвращают автоматическое создание учетной записи. Другие проверки могут потребовать действительную кредитную карту, уникальную проверку адреса электронной почты и т. Д.

+0

хорошо, я вижу всю проблему сейчас.мы думали о сеансах/токенах, но это еще не реализовано. Я задаю вопрос о прокси. так что вы говорите мне, что запрет на IP может помешать большой группе невинных пользователей требовать от наших прав? но это связано не только с прокси, верно? Я имею в виду, что, по крайней мере, в моей стране (и я думаю, что любая другая работа одинакова) группе близких пользователей Интернета предоставляется одинаковый публичный IP-адрес, то есть маршрутизатор/коммутатор, к которому они подключены. это географически связано, но и проблема, не так ли? не только прокси (в терминах ip ban) –

+1

@VictorFerreira - Да, в любом случае, когда общий IP-адрес для нескольких пользователей может вызвать проблемы с отслеживанием, основанным исключительно на IP-адресе. Корпоративный прокси - всего лишь один случай, но достаточно проблемы, чтобы заставить вас избежать этого. – jfriend00

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

  • Нет связанных вопросов^_^