| Soporte de PHP 4, PHP 5, PHP 7
|---------------|--------- | Descripción breve | Añade otro archivo de texto o script al script. | Requisitos | Otro archivo de texto o script a insertar. | Nota | No se pueden cargar archivos externos.
Inserta otro archivo de texto o script en la página. Admite archivos de texto plano.
Los archivos incrustados se comportan como si estuvieran directamente en la página.
Las secuencias de comandos incorporadas se ejecutan automáticamente.
El script incrustado transfiere el valor de las variables.
No se puede cargar desde un almacenamiento externo. Sólo puede leer texto sin formato y archivos PHP.
Formatos de ruta permitidos:
script.php
- archivo en el mismo directorio, se ejecutaráscript.html
- archivo en el mismo directorio, no se ejecutará./file.php
- archivo en el mismo directorio, se ejecutará../página.html
dirección/DalsiAddress/file.php
- escribir en sistemas UnixLas barras del tipo ****
y **/**
pueden interconvertirse, así que no tienes que lidiar con eso.
Entrada de ruta ilegal: https://domena.pripona/slozka/soubor.php
include 'archivo.php';
Inserta el script file.php
en la página y lo ejecuta.
vars.php
$color = 'verde';$fruit = 'manzana';
prueba.php
$color = '';$fruit = '';echo 'A' . $color . '' . $fruit; // Ainclude 'vars.php';echo 'A' . $color . '' . $fruit; // Una manzana verde
ADVERTENCIA: La siguiente notación no es posible, ¡transfiere el contenido de las variables definiéndolas!
include 'archivo.php?parámetro=neco';
Ninguno, sólo pone el archivo.
NOTA: Permite comparar el contenido de los archivos, pero esto es un riesgo de seguridad. El orden de los paréntesis es importante. Ejemplo:
if ((include 'archivo.php') == 'OK') {echo 'El valor es "OK"';}
¡Esto es un riesgo potencial de seguridad!
Se puede resolver con file_get_contents(), readfile() o fopen(). Fopen() sólo debe utilizarse en archivos .txt y .html.
Una lectura más segura del archivo puede resolverse definiendo una función personalizada.
Ejemplo:
$string = get_include_contents('algún archivo.php');function get_include_contents(string $filename): ?string{if (is_file($filename)) {ob_start();include (string) $filename;return ob_get_clean();}return null;}
Jakub Vrána me envió un correo electrónico:
include 'artículos/' . $_GET['Artículo'] . '.html';
Esto es extremadamente peligroso.
Un atacante puede pasar un enlace a otro directorio utilizando ../
o algo similar como nombre del artículo, y a veces es posible deshacerse de la terminación pasando un byte nulo al final.
Al menos debería utilizar la función basename()
, pero es mejor permitir sólo los valores de la lista blanca.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | es