Plesk / PHP принимает запросы только от вашего домена - PullRequest
0 голосов
/ 18 июня 2019

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

Но есть скрипт .php, который возвращает последние новости. И мой news.php (через javascript и jquery ajax) делает запрос к return_news.php, чтобы получить json-файл информации о последних новостях. И в этот момент возникает проблема. Любой желающий может отправить запрос на return_news.php и отобразить мои данные на своем сайте. Я хочу сделать так, чтобы только файлы на моем хосте могли делать запросы к моим конечным точкам или делать данные доступными только через мой домен https://www.example.com и отклонять любые запросы, поступающие из других источников.

Что я сделал:

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

Резюме: Как я могу настроить свой веб-сайт таким образом, чтобы контент был доступен только через мой домен (например, https://www.example.com), мой API отвечает на запросы, исходящие только от моего домена, и мой контент не может быть получен только запрос на получение и отображается на другом веб-сайте?

1 Ответ

1 голос
/ 24 июня 2019

По умолчанию браузеры по соображениям безопасности блокируют ответы ajax-запросов на разные домены.Это означает, что по умолчанию любой веб-сайт из другого домена, который создает запрос ajax к вашему return_news.php, не получит ответ (хотя запрос будет выполнен).

Существует также HTTPзаголовок для указания, хотите ли вы разрешить CORS или нет.Таким образом, в вашем случае, просто чтобы быть уверенным, вы можете установить его в верхней части вашего return_news.php файла

header("Access-Control-Allow-Origin: https://www.example.com");

Это дает указание браузерам возвращать ответ только тогда, когда ajax приходит со страницы под www.example.com домен.

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

fetch('https://www.example.com/return_news.php').then(function(response) {console.log(response);})
...