LINUX.ORG.RU

Запрос с одного сайта на другой. Безопасность.

 ,


1

2

На 1 сайте регистрируется техника - И данные Гетом отправляются на Другой Сайт 2

Как сделать так, чтоб запросы шли только с 1 сайта? $_SERVER[‘HTTP_REFERER’]; ничего не выводит

И вообще, чтоб никто не хулиганил.

Спасибо.

Перемещено hobbit из general

Сделать так. что бы сначала твой сайт принимал данные с формы к себе на бэк. А потом курлом делать запрос с бека на другой сайт. Тогда никто в мире кроме твоего провайдера и админов того сайта не узнает куда делает твой сайт запросы. И это по сути достаточно «безопасно»

romanlinux ★★★
()
Последнее исправление: romanlinux (всего исправлений: 1)

И данные Гетом отправляются на Другой Сайт 2

Не надо GET, надо использовать более подходящие verbs, например POST.

Как сделать так, чтоб запросы шли только с 1 сайта?

И вообще, чтоб никто не хулиганил.

Самый простой вариант — использовать HTTP Basic Auth или подпись запросов.

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 2)
  1. Сайт №1 передает запрос на свой бэкенд, обрабатывает его (проверяет валидность, например подтверждая аутентификацию и авторизацию пользователя), и делает запрос на сайт №2 с неким API-токеном (можно как параметр запроса, можно как header, можно как куки)
  2. Сайт №2 проверяет API-токен, и если он правильный, то выполняет запрос (если паранойя, можно ещё проверять что IP с которого пришел запрос принадлежит серверу, на котором хостится сайт №1).

Если делать запросы с фронтенда сайта №1, то любая, даже самая изощренная комбинация позволит произвольному пользователю сайта №1 посмотреть в исходники (ну или в историю запросов) и делать такие же запросы самому с помощью curl-а или чего-нибудь похожего. (другой вопрос, может если сайты №1 и №2 независимы, то это не так уж и плохо?)

balsoft ★★
()
Последнее исправление: balsoft (всего исправлений: 2)
Ответ на: комментарий от balsoft

Если делать запросы с фронтенда сайта №1, то любая, даже самая изощренная комбинация позволит произвольному пользователю сайта №1 посмотреть в исходники (ну или в историю запросов) и делать такие же запросы самому с помощью curl-а или чего-нибудь похожего.

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

theNamelessOne ★★★★★
()
Ответ на: комментарий от balsoft

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

Мне сейчас мысль в голову пришла. Токен ведь можно сохранять в файле на первом сайте и читать его с 2-го сайта - они на одном хостинге.

— Гениально :-)

kompospec
() автор топика
Ответ на: комментарий от balsoft
если паранойя, можно ещё проверять что IP с которого пришел запрос принадлежит серверу, на котором хостится сайт №1).

Это как делать?

kompospec
() автор топика
Последнее исправление: kompospec (всего исправлений: 1)
Ответ на: комментарий от theNamelessOne

Я согласен, что POST-ом отправлять данные «правильнее»(по смыслу). Так как get это для получения… Но как get и post сказываются на «безопасности», если есть ssl?

romanlinux ★★★
()
Последнее исправление: romanlinux (всего исправлений: 2)
Ответ на: комментарий от kompospec

Куки это на самом деле просто HTTP(S)-хедер (Cookie/Set-Cookie). В данном случае это работает потому что с точки зрения сайта №2, сервер на котором хостится сайт №1 будет клиентом.

balsoft ★★
()

Надо просто эндпоинт, на который ты шлёшь данные, на уровне Nginx закрыть от доступа извне с помощью конструкции deny all; allow 127.0.0.1 - и всё. Тогда юзеры туда доступа вообще иметь не будут - только сайты, размещённые на этом же сервере. Т.е. не из браузера со страниц «Сайта 1» в бэкенд «Сайта 2» шли запросы напрямую, а в бэкенд «Сайта 1», который отправит данные в бэкенд «Сайта 2». И никакие куки и токены там не нужны. А вообще межсервисное (внутренее) взаимодействие нынче через grpc делают.

dimuska139 ★★
()