Как реализовать возможность обращения к сайту только с определенных доменов? Мне нужно поднять несложный сервер, к которому будут обращаться сайты. Список сайтов известен, нужно только каким-то образом узнавать эти сайты, и если домена нет в списке выдавать ничего. Первое и единственное, что пришло в голову - узнавать ip ($_SERVER['REMOTE_ADDR']), потом получать хостнэйм (gethostbyaddr(ip)) и искать его в списке. Будет ли это работать как должно? P.s. Естественно, перед написанием вопроса я решил затестить. Сделал 2 сайта на вебхосте. На одном пишу в файлик все подключающиеся айпи и хостнеймы, а на другом сURL'ом делаю запрос на первый. В итоге в файлике лежит это - 2a02:4780:bad:19:fced:1ff:fe19:2 : 2a02:4780:bad:19:fced:1ff:fe19:2 (???)
Для реализации ограничения доступа к вашему серверу только по определенным доменам, вы можете использовать следующий подход:
Создайте файл с разрешенными доменами, например domains.txt, в котором будет список доменов, к которым вы хотите разрешить доступ к вашему серверу.
В вашем скрипте PHP, который обрабатывает запросы к серверу, добавьте следующий код перед выполнением основной логики:
$allowed_domains = file('domains.txt', FILE_IGNORE_NEW_LINES); $host = gethostbyaddr($_SERVER['REMOTE_ADDR']); if (!in_array($host, $allowed_domains)) { // Если хост не найден в списке разрешенных доменов, завершаем скрипт exit('Доступ запрещен'); }
Этот код будет проверять хост, откуда пришел запрос к вашему серверу, на то, есть ли он в списке разрешенных доменов. Если хост не найден в списке, скрипт завершится и выведет сообщение об отказе в доступе.
Этот подход будет работать, если домены, к которым вы хотите ограничить доступ, имеют уникальные идентификаторы. Однако, учтите, что функция gethostbyaddr() может быть не совсем надежной, так как она зависит от DNS-конфигурации и может возвратить неправильные данные в некоторых случаях. Возможно, стоит также рассмотреть использование других способов идентификации домена, например, по заголовкам запроса.
Для реализации ограничения доступа к вашему серверу только по определенным доменам, вы можете использовать следующий подход:
Создайте файл с разрешенными доменами, например domains.txt, в котором будет список доменов, к которым вы хотите разрешить доступ к вашему серверу.
В вашем скрипте PHP, который обрабатывает запросы к серверу, добавьте следующий код перед выполнением основной логики:
$allowed_domains = file('domains.txt', FILE_IGNORE_NEW_LINES);$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
if (!in_array($host, $allowed_domains)) {
// Если хост не найден в списке разрешенных доменов, завершаем скрипт
exit('Доступ запрещен');
}
Этот код будет проверять хост, откуда пришел запрос к вашему серверу, на то, есть ли он в списке разрешенных доменов. Если хост не найден в списке, скрипт завершится и выведет сообщение об отказе в доступе.
Этот подход будет работать, если домены, к которым вы хотите ограничить доступ, имеют уникальные идентификаторы. Однако, учтите, что функция gethostbyaddr() может быть не совсем надежной, так как она зависит от DNS-конфигурации и может возвратить неправильные данные в некоторых случаях. Возможно, стоит также рассмотреть использование других способов идентификации домена, например, по заголовкам запроса.