Express.js — надежность домена/IP-адреса запрашивающей стороны

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

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

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

I figured that I should only allow POST requests from my own domain.

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

Другие вопросы по теме