Documentos de Académico
Documentos de Profesional
Documentos de Cultura
</form>
• $_FILES
CC51T – Desarrollo de Aplicaciones web
– $_FILES['userfile']['name']
• El nombre original del archivo en la máquina cliente.
– $_FILES['userfile']['type']
• El tipo mime del archivo, si el navegador proporciona esta
información. Un ejemplo podría ser "image/gif". Este tipo
mime no se verifica en el lado de PHP y por lo tanto no se
garantiza su valor.
– $_FILES['userfile']['size']
• El tamaño, en bytes, del archivo subido
– $_FILES['userfile']['tmp_name']
• El nombre temporal del archivo en el cual se almacena el
archivo cargado en el servidor
• $_FILES
CC51T – Desarrollo de Aplicaciones web
– $_FILES['userfile']['error']
• El código de error asociado a esta carga de archivo.
Agregado en PHP 4.2.0
• Si no se indica otro lugar, los archivos se
almacenan en el directorio temporal del servidor
• El archivo será borrado del directorio temporal al
final de la solicitud si no se ha movido o
renombrado.
<?php
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "El archivo es válido y fue cargado exitosamente.\n";
} else {
echo "¡Posible ataque de carga de archivos!\n";
}
print "</pre>";
?>
• Validaciones
CC51T – Desarrollo de Aplicaciones web
• Dificultades:
CC51T – Desarrollo de Aplicaciones web
• Sistema de archivos
CC51T – Desarrollo de Aplicaciones web
<?php
// remove a file from the user's home directory
$username = $_POST['user_submitted_name'];
$userfile = $_POST['user_submitted_filename'];
$homedir = "/home/$username";
unlink("$homedir/$userfile");
• Inyección de SQL
CC51T – Desarrollo de Aplicaciones web
<?php
0;
insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd)
select 'crack', usesysid, 't','t','crack'
from pg_shadow where usename='postgres';
--
• Inyección de SQL
CC51T – Desarrollo de Aplicaciones web
<?php
?>
'
union select '1', concat(uname||'-'||passwd) as name, '1971-01-01', '0'
from usertable;
--
• Consejos
CC51T – Desarrollo de Aplicaciones web
<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES
(:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);
• Consejos
CC51T – Desarrollo de Aplicaciones web
<?php
settype($offset, 'integer');
$query = "SELECT id, name FROM products ORDER BY name
LIMIT 20 OFFSET $offset;";
?>