Безопасно ли allow_url_fopen?

В настоящее время я использую file_get_contents() чтобы получить заголовок веб-страницы, учитывая URL-адрес. На wamp это работает отлично. Однако, когда я переместил это на свой веб-сервер, я столкнулся с проблемой, которая привела меня к этому ответу. (Который должен установить allow_url_fopen в 1 ).

Существует ли серьезный риск для безопасности при настройке? Если да, есть ли альтернативные способы захватить название веб-страницы из самого URL-адреса?

(Кроме того, неуверенность в тегах для этого, пожалуйста, не стесняйтесь добавлять / удалять, если это необходимо!)

Изменить (1): Дальнейшие исследования привели меня к этому вопросу, который в значительной степени говорит о том, что это тоже риск, и отключить его, если приложение не нуждается в этом. К сожалению, это не говорит мне о риске.

Редактировать (2): Быстрое замечание, я буду использовать эту функцию с пользовательским вводом (URL), а не внутри, поэтому я хочу обеспечить, чтобы не было абсолютно никакого риска для безопасности

Это одна из причин, по которой вы можете allow_url_fopen установить значение 0

Предположим, вы разрешаете пользователям вводить URL-адрес, и ваш сервер получает этот URL-адрес.

Вы могли бы закодировать что-то вроде этого: – ВЫ НЕ ДОЛЖНЫ КОДИРОВАТЬ ЭТО

 echo file_get_contents($_POST['url']); 

Проблема в том, что здесь есть проблема с безопасностью. Кто-то может передавать путь к файлу вместо URL-адреса и иметь доступ к файлам вашего сервера.

Например, кто-то может передать /etc/passwd в качестве URL-адреса и иметь возможность просматривать его содержимое.

Теперь, если allow_url_fopen был установлен в 0, вы не будете использовать file_get_contents для извлечения URL-адреса, вы будете использовать CURL.

allow_url_fopen в порядке. Если вам нужна эта функция, включите ее. Существуют более эффективные инструменты для загрузки данных с удаленных URL-адресов (например, расширение curl ), но это достаточно удобно для некоторых простых случаев использования.

Его близкий родственник allow_url_include не является безопасным. Он позволяет использовать такие функции, как include() и require() для загрузки и запуска кода с удаленных URL-адресов, что является очень плохой идеей. Оставьте его выключенным.

Раньше allow_url_include не всегда существовал как отдельный параметр, поэтому необходимо было отключить allow_url_fopen чтобы предотвратить плохо написанные сценарии от включения данных с удаленных URL-адресов. Однако это уже не так.