Можно ли определить домен с которого пришел POST запрос?
Например с клиентской части сайта должен прийти POST/GET запрос на сервлет (технология которую использует сервер в данном вопросе не важна) и вот как определить пришел ли он действительно с конкретного сайта или это кто-то открыл исходный код страницы, скопировал запрос в блокнот и запустил в браузере.
Ну если разговор идет про два сервера, например мы говорим вк что будут конекты с нашего домена, вк получает А запись домена и добавляет айпи с нее в вайт лист.
Тем самым определяет, но сработает такое только для серверов, грубо говоря это просто доступ по айпи.
Не знал. Спасибо. Тогда получается в заголовке должен приходить IP не только клиента, но сервера с которого был сделан запрос. Верно? И если да, то ведь и его тогда можно подделать наверное.
В заголовке айпи не приходит, не нужно айпи не куда добавлять, это просто разрешение по айпи. На вопрос я уже ответил, все можно подделать. Хотя есть вы более конкретно опишите суть проблемы, возможно найдутся еще решения. Можете написать мне в скайп или тут.
@ScorpLeX у меня магазин. Клиент (html, css и клиентский js) лежат на одном хостинге. Серверная часть и БД на другом. Запросы на бакенд уходят прямо с клиентской страницы. С учетом того что подделать можно все как я могу быть уверен, что запросы на бакенд приходят именно с "правильного" сервера? То есть понятно что я могу создать некую подпись (токен) при авторизации юзера, но до нее сначала нужно отправить запрос на эту авторизацию. Объединить я их не могу (по ряду причин), но текущий подход ставит безопасность под сомнение.
Мне меньше всего хотелось бы узнать что может случиться в этом случае. Хотелось бы игнорировать все запросы приходящие не с клиентской стороны магазина. Это реально сделать? Если да, то в какую сторону копать? Backend на node.js
Если запросы уходят с клиентской страницы, нельзя.
Не случится не чего страшного. Максимум кто то скопирует себе и будет пользоваться вашим backend'ом, но это можно сделать с любым сайтом.
@ScorpLeX спасибо за ответы. Вы меня успокоили. Но теперь я не понимаю смысла фиксированных доменов в соц. сетях для приложений если все это можно обойти :) Лишняя предосторожность?
@ScorpLeX у меня есть некий ресурс , который предоставляет свое api другим определенным ресурсам (зарегистрированным) для взаимодействия указывается авторизационный ключ (хранится на моем сервере в БД) + тело запроса , и получается чтобы никто с другого сервера не использовал этот же авторизационный ключ достаточно просто знать ip адрес правильно сервера ? можно ли считать что ip = домен ( по уникальности) или же под одним ip адресом может быть несколько доменных имен ( имеется ввиду несколько различных ресурсов)
@vachuahe попробуйте спросить это еще одним вопросом на сервисе, я не очень понимаю о чем вы и не могу ответить. @Rockstar18 на одном ip могут быть десятки доменов, так же и у домена могут быть несколько А записей, то есть ip.
@Rockstar18 за меня задал более понятный вопрос. Видимо ему и мне интересен один и тот же вопрос - при условии что запросы обрабатываются с другого сервера есть ли еще способы защиты и идентификации этих запросов кроме токена? И насколько эффективен этот способ сам по себе (может и его можно обойти)?
Ну представим что я на своем сервере предоставляю какой то сервис, я дал одному клиенту доступ, он мне заплатил денежку, я соответственно хочу, что бы использовал сервис только 1 клиент, выдал клиенту пароль\токен\ключ, или даже дал доступ только с ip клиента (или сервера клиента). Но в данном случаи у клиента остается много вариантов меня обмануть, например если он захочет поделится с другом моим сервисом, даст другу ключ, а у себя сделает прокси сервер, в таком случаи друг клиента будет иметь и ключ и айпи и легко может пользоваться моим сервисом.
Теперь к вопросу о том как же это предотвратить, я могу на моем сервисе сделать систему которая будет выдавать временный ключ клиенту при авторизации, тогда в один момент времени, сможет только 1 клиент пользоваться сервисом, хотя и это тоже можно обойти, но уже будут неудобства.
@ScorpLeX у меня проблема не в том что кто то захочет дать ключ другу ( потому что я планирую делать оплату по запросно , то есть сделать например 1000 запросов заплатил столько то) , а в том что кто то другой узнает у пользователя ключ (например насколько мне известно можно слушать порты сервера пользователя и поймать ключ при запросе на мой ресурс) , из этого, опираясь на ответы у меня есть всего один выход - шифрование ключика авторизаций и дешифрование его на моем ресурсе (если по простому) , шифровать его можно наверно им же самим ( таким образом решив проблему дешифрования так как мой ресурс естественно будет знать ключ) , в целом я плохо в этом разбираюсь так что если есть другие варианты мне бы хотелось о них узнать
Понятно, что все можно подделать, но для начала стоит проверить реферер. Если кто-то запустит пост с локали, то реферер будет пустой. Если с вашего сайта, то реферер будет ваш, если с другого сайта то реферер другого сайта.