(PHP 3>= 3.0.17, PHP 4 >= 4.0.3, PHP 5)
is_uploaded_file -- Indica si un archivo fue cargado a través de
HTTP POST
Descripción
bool
is_uploaded_file ( string nombre_archivo)
Devuelve TRUE si el archivo dado por
nombre_archivo fue cargado a través
de HTTP POST. Esto es útil para ayudar a verificar que un
usuario malicioso no ha intentado engañar al script
haciéndole trabajar sobre archivos con los que no
debería trabajar--por ejemplo,
/etc/passwd.
Este tipo de chequeo es especialmente importante si existe alguna
posibilidad de que cualquier cosa realizada con archivos cargados
pueda revelar sus contenidos al usuario, o incluso a otros
usuarios en el mismo sistema.
is_uploaded_file() se encuentra disponible
únicamente en versiones de PHP 3 superiores a PHP 3.0.16,
y en versiones de PHP 4 superiores a 4.0.2. Si está
atrapado usando una versión anterior, puede usar la
siguiente función para protegerse:
Nota:
El siguiente ejemplo no trabajará
con versiones de PHP 4 superiores a 4.0.2. Depende en la
funcionalidad interna de PHP que fue modificada luego de esa
versión.
Ejemplo 1. Ejemplo de is_uploaded_file()
<?php /* Prueba de usuario para verificar un archivo cargado. */ function is_uploaded_file($nombre_archivo) { if (!$archivo_tmp = get_cfg_var('upload_tmp_dir')) { $archivo_tmp = dirname(tempnam('', '')); } $archivo_tmp .= '/' . basename($nombre_archivo); /* El usuario puede tener una barra final en php.ini... */ return (ereg_replace('/+', '/', $archivo_tmp) == $nombre_archivo); }
/* Asi es como se usa, ya que tampoco se cuenta con * move_uploaded_file() en estas versiones antiguas: */ if (is_uploaded_file($HTTP_POST_FILES['archivo_de_usuario'])) { copy($HTTP_POST_FILES['archivo_de_usuario'], "/lugar/a/colocar/el/archivo/cargado"); } else { echo "Posible ataque de archivo entrante: nombre de archivo '$HTTP_POST_FILES[archivo_de_usuario]'."; } ?>
|
|
Vea también move_uploaded_file(), y la
sección Gestión de carga de
archivos para un ejempo de uso sencillo.