Express.js - запрос домена / надежность IP - PullRequest
0 голосов
/ 18 июня 2019

Я недавно видел эту ТАК сообщение о получении домена запроса. Мне интересно, будет ли эта информация достоверной (т.е. может ли злоумышленник "подделать" эту информацию?). В частности, домен и тип запроса (GET, POST и т. Д.). Причина, по которой я спрашиваю, состоит в том, что я не уверен, смогу ли я использовать это для обеспечения безопасности моего приложения. Я решил, что мне следует разрешать POST-запросы только из моего собственного домена.

1 Ответ

2 голосов
/ 18 июня 2019

Запросы, отправляемые клиентами (например, браузерами), не поступают из определенного домена.Они приходят с IP-адреса клиента.Этот клиент может запускать веб-страницу с определенного сайта, но любая информация, включенная в запрос на этот счет, не может быть доверенной и может быть подделана так, как хочет клиент.Подумай об этом еще раз.Клиентские запросы не приходят с домена.Они исходят от клиента, который мог или не мог получить веб-страницу от определенного домена до отправки запроса API.

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

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

Типы защиты, которые такие люди, как Google, применяют к своим API, которые используются в браузерах:

  • токены API, которые позволяют им отслеживать использование по определенному токену и / или отзывать токены, которые используют службу не по назначению
  • Ограничение рейтинга, предотвращающее злоупотребление API конкретным пользователем API или IP-адресомservice
  • Лицензирование разрешенного использования, а затем отслеживание на стороне сервера того, что является допустимым или недопустимым использованием
  • Мониторинг использования вошедшего в систему пользователя для отзыва имен входа, которые неправильно используют API службы
  • Краткосрочные токены API, которые динамически генерируются на веб-страницах и регулярно меняются.

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

Я решил, что мне следует разрешать запросы POST только из моего собственного домена.

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

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