Una aplicación java en la que estoy trabajando tiene un componente de carga de archivos, y quiero validar que solo se permiten ciertos tipos de archivos. Me doy cuenta de que la verificación de la extensión del archivo por sí sola no es lo suficientemente confiable, por lo que comencé a validar las firmas hexadecimales de los archivos cargados. He estado usando esto como referencia: enlace
Entonces, esta aplicación esperará algunos archivos OOXML, pero parece que cada uno de estos (docx, pptx, xlsx) tiene la misma firma hexadecimal (50 4B 03 04 14 00 06 00), Sin subencabezado para diferenciarlos.
¿Existe una buena manera de diferenciarlos o, si lo implementara, si la extensión del archivo es un archivo OOXML que aceptamos y la firma hexadecimal compartida es correcta, permítale pasar? ¿Hay algún problema de seguridad adicional por la implementación de este último?