Заставить серверное приложение принимать запросы только от клиентского приложения на том же хостинге - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть приложения angular и php, размещенные на одном и том же виртуальном хостинге и доступные с одного домена example.com. Приложение php предоставляет API остальных, и я хочу, чтобы этот API был доступен только из приложения angular.

Оба приложения не имеют аутентификации пользователя.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Как упоминалось в @Edcel Cabrera Vista, я попытался ограничить вызовы на уровне приложений, добавив правила в файл .htaccess, отметив в файле PHP, совпадает ли IP-адрес входящего клиента с ip или localhost моего сайта, добавив basi c авторизация. Ни один из них не работает, потому что приложение angular в конце концов является просто клиентским JS кодом, который выполняется в браузере пользователя, поэтому пользователь имеет полный контроль над ним, и IP-адрес клиента всегда будет IP-адресом пользователя.

В конце концов я понял, что могу выполнить рендеринг HTML на стороне сервера и вернуть клиенту готовую страницу HTML. На данный момент это соответствует моим потребностям.

0 голосов
/ 14 апреля 2020

Лучший способ сделать это - разместить свой бэкэнд в приватном су bnet, который доступен для интерфейса angular по внутреннему сетевому маршруту.

                       [ Your network /16 ]
            [ Public Subnet /24 ] [ Private Subnet /24 ]
               [Frontend]  <-  Route ->   [Backend]

Но, опираясь на свой случай, вы хостинг как в одном экземпляре сервера, которые публикуются c. Который вышеуказанная рекомендация не применима. Поскольку вы не можете ограничить его на сетевом уровне, вы можете посмотреть на прикладной уровень и использовать расширение конфигурации веб-сервера, такое как .htaccess, вы можете создать правило, разрешающее только запрос веб-интерфейса. Это ограничение прикладного уровня.

...