Блокировать запросы http / https, выполняемые из сценариев или любых других внешних источников на сервере узла - PullRequest
0 голосов
/ 07 ноября 2018

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

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

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

Я хотел бы знать, возможно ли полностью блокировать запросы из внешних источников (созданные вручную сценарии, почтальон, такие программы, как LOIC и т. Д.) На сервере узлов с помощью Express.

спасибо!

1 Ответ

0 голосов
/ 08 ноября 2018

Я хотел бы знать, возможно ли полностью блокировать запросы из внешних источников (созданные вручную сценарии, почтальон, программы типа LOIC и т. Д.) На сервере узлов с помощью Express.

Нет, это невозможно. Правильно сформированный запрос от почтальона или кодированный с помощью axios в node.js может выглядеть так, как если бы он исходил из браузера. Ваш сервер не будет знать разницу.

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

Затем вы программно отслеживаете использование и замедляете или запрещаете любые учетные данные, которые неправильно используют API в соответствии с вашими условиями (именно так Google работает со своими API). Вы также можете внедрить ограничение скорости и другие средства защиты сервера, чтобы убогая учетная запись разработчика не могла нанести вред вашей службе. Вы можете даже занести в черный список IP-адреса, которые постоянно злоупотребляют вашим сервисом.

Для API, которые вы хотите использовать на своих собственных веб-страницах (для вызова Ajax), нет никакого реального способа не позволить другим использовать те же API программно. Вы можете отслеживать их использование и пытаться обнаружить использование, которое выходит за рамки того, что будут делать ваши собственные веб-страницы. Существуют также некоторые схемы, в которых вы размещаете уникальный токен короткого использования на своей веб-странице и требует, чтобы ваши веб-страницы включали токен в каждый запрос API. С некоторыми усилиями умные разработчики могут обойти эту проблему, регулярно удаляя токен с вашей веб-страницы, а затем используя его программно до истечения срока его действия. Но для вора API это дополнительное препятствие.

Как только вы определили обидчика, вы можете заблокировать его IP-адрес. Если они оказываются в более крупной сети (например, в университете), их общедоступный IP-адрес может быть разделен многими через NAT, и вы можете заблокировать гораздо больше пользователей, чем вы хотите - это всего лишь следствие блокировки IP-адреса это может делиться многими пользователями.

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