¿Verificar la extensión de un archivo es suficiente para saber que el archivo no está ocultando un virus (o algo que pueda infiltrarse en mi servidor)?
Estoy desarrollando un sistema en el que el usuario podrá subir un archivo “.docx”. ¿Verificar su extensión es suficiente para saber que este archivo “.docx” no está infectado?
Aquí está mi código PHP de carga:
<?php
session_start();
include("connection.php");
include("functions.php");
// Solo para validar al usuario
$datosUsuario = checklogin($con);
include("connectionPostsDB.php");
if (isset($_POST['submit'])){
$titulo = $_POST['title'];
$etiqueta = $_POST['tag'];
$descripcion = $_POST['description'];
$archivo = $_FILES['file'];
$nombreArchivo = $_FILES['file']['name'];
$nombreArchivoTmp = $_FILES['file']['tmp_name'];
$tamanoArchivo = $_FILES['file']['size'];
$errorArchivo = $_FILES['file']['error'];
$tipoArchivo = $_FILES['file']['type'];
$extArchivo = explode('.', $nombreArchivo);
$extActualArchivo = strtolower(end($extArchivo)); // aquí obtengo la extensión actual del archivo (espero xD)
$permitidos = array('docx');
if(in_array($extActualArchivo, $permitidos)){
if($errorArchivo === 0){
if($tamanoArchivo < 1000000){
$nombreArchivoNuevo = uniqid('', true).".".$extActualArchivo;
$destinoArchivo = '../imgs/posts/'.$nombreArchivoNuevo;
move_uploaded_file($nombreArchivoTmp, $destinoArchivo);
$consulta = "INSERT INTO posts (titulo, descripcion, nombreimg, etiqueta)
VALUES ('".$titulo."','".$descripcion."','".$nombreArchivoNuevo."','".$etiqueta."')";
mysqli_query($postcon, $consulta);
echo 'Archivo cargado correctamente';
}
else {
echo 'Tu archivo es demasiado grande.';
}
}
else {
echo 'Hubo un error al cargar tu archivo.';
}
}
else {
echo 'No se permite este tipo de archivo.';
}
}
Entonces, ¿verificar la extensión del archivo es suficiente para evitar que algún usuario inserte código PHP en mi servidor (o haga algo para obtener información del servidor)?
davy.ai
Verificar la extensión de un archivo no siempre es suficiente para saber si está infectado o no. Los atacantes pueden cambiar el nombre de la extensión del archivo a algo permitido, como “.docx”, y aún así inyectar código malicioso en el archivo. También pueden utilizar archivos especialmente creados para evadir las comprobaciones basadas en las extensiones de archivo.
Para asegurar una mejor seguridad, se debe utilizar un método más robusto para detectar virus o código malicioso en los archivos subidos. Algunas opciones incluyen:
Se puede utilizar una combinación de estos métodos para asegurar una mejor protección para su sistema.