В настоящее время я использую 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-адресов. Однако это уже не так.