На какие функции PHP влияет allow_url_fopen? - PullRequest
3 голосов
/ 23 марта 2019

В PHP флаг allow_url_fopen определяет, может ли удаленный URL-адрес использоваться различными функциями файловой системы для доступа к удаленным файлам.

В настоящее время рекомендуется отключить эту опцию в соответствии с рекомендациями по обеспечению безопасности, поскольку это потенциальный вектор атаки.Тем не менее, любой код, который зависит от этой функциональности, будет работать, если параметр отключен.Например, мне известен по крайней мере один плагин reCaptcha, который использует file_get_contents() для доступа к API Google и, следовательно, зависит от этого флага.

Чтобы проверить код в наших приложениях, чтобы определить, безопасен ли ончтобы отключить этот флаг (с целью перезаписи, где это необходимо), мне нужен канонический список функций PHP, на которые он влияет.Однако я не смог найти такой список - на веб-сайте PHP его нет, и поиск в Google ничего не дал.

  • Может кто-нибудь предоставить списоквсе функции PHP, на поведение которых влияет allow_url_fopen?

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

1 Ответ

3 голосов
/ 24 марта 2019

Список функций огромен, так как директива allow_url_fopen ini реализована в системе потоков PHP, что означает, что это влияет на все, что использует сетевые потоки PHP.

Сюда входят функции практически всех расширений PHP, которые не используют внешнюю библиотеку для получения доступа к удаленному файлу. Так как некоторые расширения, такие как cURL, используют собственный транспортный уровень вне PHP.

Некоторые расширения, как известно, ext/soap в некоторой степени обходят эту директиву (по какой причине я точно не знаю, так как я не знаком с внутренностями этого расширения).

Любая функция из стандартной библиотеки (реализована в: main/, Zend/, ext/standard, ext/spl), означающая, что каждая Файловая система, Поток, Включает и Оболочки URL уважает эту директиву. Сверху головы я также знаю, что ext/exif делает это.

Я не могу вспомнить, если расширения на основе XML (такие как ext/libxml, ext/simplexml, ext/xmlreader, ext/xmlwriter, ext/dom) делают это, но я уверен, что был точка в прошлом, где они не уважали ее, поскольку путь был непосредственно предоставлен для LibXML2 внизу.

...