#php #curl
#php #завиток
Вопрос:
Я играю с созданием очень простого API, в котором внешний веб-сайт отправляет сообщение CURL на мой веб-сайт, и запрос обрабатывается только в том случае, если он поступает с URL-адреса, внесенного в белый список. Не похоже, что какие-либо данные $ _SERVER фиксируют, какой веб-сайт отправил сообщение. Я знаю, что мог бы создать пользовательский код CURL, который выглядел бы примерно так:
curl_setopt($ch, CURLOPT_POSTFIELDS,"url=".$_SERVER['HTTP_HOST']);
Но тогда ничто не помешало бы пользователю просто зайти и изменить его на
curl_setopt($ch, CURLOPT_POSTFIELDS,"url=white-listed-url.com");
Я не женат на CURL, просто показался лучшим вариантом. Откройте в любом случае, что у меня может быть внешний запрос на мой веб-сайт, и я могу получить URL-адрес сайта, отправляющего запрос.
Комментарии:
1. Либо внесите IP-адрес в белый список, либо выполните DNS-запрос к указанному URL-адресу и проверьте, подходит ли ip для запроса
2. Вероятно, вам следует посмотреть на auth с помощью curl, вы можете легко обойти простой белый список IP-адресов, подобный этому
3. Об этом спрашивают снова и снова, но это невозможно. Причина в том, что клиент всегда может изменить любой аспект запроса. Вы никогда не можете доверять никаким данным, которые получаете от клиента.