Sé que hay muchas publicaciones sobre este tema. Pero esas publicaciones generalmente hablan de restringir los tipos de archivos y tamaños, etc. Por lo tanto, no sirve a mis necesidades ya que mi sistema no tiene restricciones.
Supongamos que tenemos una aplicación web que acepta las cargas de los usuarios que han iniciado sesión. Estos usuarios se autentican a través de Active Directory. Los usuarios anónimos no están permitidos.
Los usuarios pueden cargar cualquier tipo de archivo al sistema. Luego, los usuarios pueden obtener una vista previa de los archivos cargados a través de nuestro visor de propósitos múltiples. En este momento admitimos algunos tipos de archivos básicos, como imágenes, música, videos, archivos pdf y archivos de oficina. Para los tipos visibles, decido buscar en el diccionario los tipos visibles, y si el tipo no existe, no se verán, sino que se descargarán directamente.
Tengo curiosidad por los riesgos de seguridad que tengo, por lo tanto, intentaré elaborar mi sistema.
Tengo dos sistemas diferentes en cuanto al procedimiento de mantenimiento de archivos:
- Una aplicación internet donde el almacenamiento es un sistema de archivos estructurado donde los nombres de los archivos se cambian con guías
- Una aplicación intranet donde el almacenamiento es un sistema de archivos no estructurado donde los archivos están directamente en la unidad de red a medida que el usuario los carga, y los usuarios también pueden acceder a los archivos a través de la unidad de red
Para ambas aplicaciones, la estrategia de vista previa es la misma.
Todos los archivos se sirven desde un método de acción al que solo se puede acceder mientras se autentica. Y el recorrido de la ruta lógica para los archivos cargados se permite .
Los archivos que no son de Office se devuelven al cliente y se muestran en las etiquetas img
, video
y embed
html.
Por otra parte, los archivos de Office primero se ejecutan a través de bibliotecas de interoperabilidad de Microsoft Office, se convierten a pdf, luego se devuelven al cliente y, nuevamente, se muestran como un pdf normal.
Me pregunto, ¿a través de estos procesos estoy comprometiendo cualquier seguridad aquí en el lado del servidor? Sé que el usuario puede cargar archivos maliciosos, pero ¿hay alguna manera de que el usuario pueda dañar mi sistema al escribir o leer el proceso de los archivos?