(PHP 3>= 3_0_17, PHP 4 >= 4_0_3)
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_
<?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_