Si cree getimagesize()
es un poco demasiado lento (porque todos los archivos subidos se hacen en súper alta velocidad tal como la conocemos;)), puede intentar la fileinfo
library como bien. Inspecciona al menos algunos bytes dentro del archivo. Es bastante rápido, lo uso todos los días para cientos de archivos en una aplicación que debe ejecutarse rápidamente y lo hace.
Sin embargo, lo que no verifica no lo sabe. Probablemente, primero verifique la extensión, asegure un nombre de archivo seguro y una tienda segura, y que se envíen correctamente al cliente.
Antes de permitir que cualquier biblioteca de imágenes lo toque (y esto debería incluir los que están en las computadoras de los usuarios de su sitio), por razones de seguridad, el archivo debe escanearse con un escáner de virus. Eso es mucho más lento en comparación con getimagesize()
, otros sugieren echar un vistazo al archivo para detectar cualquier caso de <?php
y para evitar cargarlo como carga útil. Naturalmente, esto incluye verificar los archivos phar
si la inclusión no se previene a través de la configuración de seguridad de las instalaciones PHP (por ejemplo, suhosin)
Al lado de la detección de virus a petición, los archivos almacenados se deben revisar periódicamente una y otra vez debido a exploits desconocidos
Así que parte de esto es siempre un trabajo de fondo. Pero incluso los cheques en tiempo real bajo demanda a menudo no toman mucho tiempo a menos que su aplicación cargue todo el tiempo. Es posible que desee introducir algo de cola de carga, por lo que la carga ya está hecha, pero el archivo estará disponible para el cargador una vez que se hayan ejecutado las tareas necesarias.
¿Funciona al marcar el tipo MIME? Realmente no desea tener scripts PHP en su servidor, incluso si tiene una extensión jpg no son tan peligrosos (y ni siquiera estoy seguro de eso) – Julien
Dudo que la lentitud de la verificación del tipo de archivo sea comparable a el proceso de carga http en sí. – mario
la velocidad de la función no debería importar ya que la ejecutará directamente después de la carga, que ningún usuario espera ser instantánea de todos modos. Yo diría que simplemente use http://www.php.net/manual/en/book.fileinfo.php y termine con eso y nunca tendrá que preocuparse. – castis