Должен ли я разрешить 'allow_url_fopen' в PHP? - PullRequest
33 голосов
/ 24 сентября 2008

У нас есть пара разработчиков, которые просят включить allow_url_fopen на нашем сервере. Какова норма в наши дни, и если libcurl включен, есть ли на то веские основания для разрешения?

Среда: Windows 2003, PHP 5.2.6, FastCGI

Ответы [ 5 ]

20 голосов
/ 24 сентября 2008

Я думаю, что ответ сводится к тому, насколько хорошо вы доверяете своим разработчикам использовать эту функцию ответственно? Данные из внешнего URL-адреса должны обрабатываться как любые другие ненадежные входные данные, и если это понятно, в чем же дело?

На мой взгляд, если вы относитесь к своим разработчикам как к детям и никогда не позволяете им справляться с острыми вещами, то у вас будут разработчики, которые никогда не поймут ответственность за написание безопасного кода.

17 голосов
/ 24 сентября 2008

Вы определенно хотите, чтобы для allow_url_include было установлено значение Выкл., Что также снижает многие риски allow_url_fopen.

Но поскольку не все версии PHP имеют allow_url_include, для многих рекомендуется отключить fopen. Как и со всеми функциями, реальность такова, что если вам не нужно это для вашего приложения, отключите его. Если вам это нужно, модуль curl, вероятно, сможет сделать это лучше, и рефакторинг вашего приложения для использования curl для отключения allow_url_fopen может сдержать наименее решительный взломщик.

2 голосов
/ 24 сентября 2008

Зависит от типа разработки. Если вы используете прототип, то включение 'allow_url_fopen' в порядке, однако нет существенной разницы в скорости между libcurl и file_get_contents, и включение его - только вопрос удобства.

Для производственных серверов любой вызов libcurl должен быть помечен для аудита безопасности. Как следует из fopen и file_get_contents, если включен параметр allow_url_fopen. Отключение allow_url_fopen не предотвращает эксплойты, оно лишь немного ограничивает количество способов, которыми они могут быть выполнены.

2 голосов
/ 24 сентября 2008

Атаки с использованием межсайтовых скриптов - это боль, так что это голос против. И вам обязательно нужно отключить " allow_url_include ", иначе вы попадете в мир боли.

0 голосов
/ 23 декабря 2009

Большая проблема в том, что allow_url_fopen не более защищен , поэтому, если вы хотите сохранить файл из URL с помощью curl, вы должны перейти из fopen / file_get для сохранения файла.

  • CURL хорош только для извлечения удаленного контента из URL. (allow_url_fopen необязательно)
  • CURL должен быть добавлен с Fopen или File_get, если вы хотите сохранить удаленно файл на ваш сервер. (allow_url_fopen обязательно с CURL)

Php должен найти другие способы сделать его более защищенным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...