scabrera
Delta
/**/
$name = 'nombredearchivo.png';
$extensiones_permitidas = array('png', 'jpeg', 'jpg', 'gif');
/**/
$name_array = explode('.', $name);
/* Probablemente con uno de los dos sería suficiente, pero
no está de más hacer una doble comprobación */
$extension = end($name_array);
$extension2 = pathinfo($name, PATHINFO_EXTENSION);
if(!in_array($extension, $extensiones_permitidas) || $extension != $extension2)
die('Tipo de archivo no permitido!');
if(!getimagesize($rutaarchivo)){
unlink($rutaarchivo);
die('Archivo inválido!');
}
<IfModule mod_php5.c>
php_flag engine off
</IfModule>
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi .dat .html
RewriteRule \.(gif|jpg|js|css|swf|png)$ - [L]
Puedes hacer que solo se permitan subir archivos con las extensiones que tu permitas así:
PHP:/**/ $name = 'nombredearchivo.png'; $extensiones_permitidas = array('png', 'jpeg', 'jpg', 'gif'); /**/ $name_array = explode('.', $name); /* Probablemente con uno de los dos sería suficiente, pero no está de más hacer una doble comprobación */ $extension = end($name_array); $extension2 = pathinfo($name, PATHINFO_EXTENSION); if(!in_array($extension, $extensiones_permitidas) || $extension != $extension2) die('Tipo de archivo no permitido!');
Después puedes, como medida de seguridad extra, comprobar que sea una imagen usando getimagesize:
PHP:if(!getimagesize($rutaarchivo)){ unlink($rutaarchivo); die('Archivo inválido!'); }
Tambien como medida de seguridad extra puedes añadir este código en un archivo .htaccess en el directorio en el que guardas las imagenes:
Insertar CODE, HTML o PHP:<IfModule mod_php5.c> php_flag engine off </IfModule> AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi .dat .html RewriteRule \.(gif|jpg|js|css|swf|png)$ - [L]
Con esto impides la ejecución de archivos html, php etc. en ese modo aunque suban el archivo no podrán abrirlo.
if (isset($_FILES['archivo']['tmp_name'])) {
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES['archivo']['tmp_name']);
if ($mime == 'image/jpeg) {
echo "es una imagen jpg";
}else{
//lo que quieras
}
finfo_close($finfo);
}
Es raro ver por aqui gente dando las gracias.
No había entendido bien la pregunta soy un poco corto.
Puedes mirar esto, solo te podrían subir imágenes (en este ejemplo jpg).
if (isset($_FILES['archivo']['tmp_name'])) {
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES['archivo']['tmp_name']);
if ($mime == 'image/jpeg) {
echo "imagen jpg";
}else{
//lo que quieras
}
finfo_close($finfo);
}
Ahora voy a revisar bien el código, no me dan las manos para borrar archivos del hosting, pero creo q eso lo tengo de manera muy similar, en mi botón de upload, pero necesitaría bloquear todo desde más arriba ya que no es desde mi botón de upload desde dónde acceden, con el cambio en .httaccess creo q voy a complicarselas bastante.
Gracias por la info, les cuento en unas horas como va todo. Estoy intentando contactar a varios dueños de tarjetas de crédito robadas que encontré en varios .txt de mi hosting, a los 15 años me hubiese parecido simpático comprarme RP en el LoL, ahora me da empatía pobre gente.
Estos códigos es para que solo suban imágenes al servidor, eso no quiere decir que las imágenes no tengan código malicioso.
Lo sé, pero si subes código php en un archivo con extensión .jpg el browser no interpreta código php a menos q el archivo tenga esa extensión, igual siempre se puede verificar tanto con imagick como con getimagesize.
El problema es que mi sitio está lleno de código por todos lados, y aunque borré todos los archivos q no correspondían a mi sitio puede que hayan modificado algún archivo existente (ya encontré 1 modificado), ahora lo que estoy haciendo es revisar diferencias de tamaños en archivos que no cambian de tamaño, y en los que cambian de tamaño los estoy revisando a mano pero son muchos, lo que me lleva a otra pregunta, ¿alguna línea de código que si o si tengan todas las shells? Así busco con textcrawler en todos los archivos al mismo tiempo en busca de esa/s línea/s
No conozco textcrawler, pero hacer un pequeño script en bash en linux es fácil con el comando "grep"
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?