El sistema per a rebre fitxers dels usuaris és convenient, però si no està dissenyat adequadament pot provocar vulnerabilitats greus. Els atacants poden abusar de la pujada per executar codi arbitrari, agotar l'espai del servidor, distribuir fitxers no autoritzats, etc.
Les amenaces més típiques són les següents:
La base de la contramesura és un "defensa en profunditat". És eficaç dissenyar diverses capes de defensa sense dependre d'una sola contramesura.
Limiteu les extensions permeses i no decidiu l'acceptació només per l'extensió. Comproveu la signatura del fitxer (número màgic) per validar el seu contingut. No confieu en l'encapçalament Content-Type i implementeu tractaments per evitar dobles extensions o bytes NULL.
No guardeu el nom del fitxer proporcionat per l'usuari tal qual. Substituïu-lo per un nom únic mitjançant UUID o un hash amb un timestamp, guardant el nom original com a metadades. També tracteu caràcters especials i restriccions de longitud.
És important emmagatzemar els fitxers pujats fora de la ruta web per evitar la seva execució directa. Si és possible, emmagatzemeu-los en un emmagatzematge d'objectes dedicat (ex: S3) i genereu un enllaç de descàrrega a través de l'aplicació. Limiteu la carpeta de desament amb permisos mínims de lectura i escriptura sense permisos d'execució.
Establiu un límit de mida de fitxer i introduïu controls sobre el número de pujades simultànies i la taxa per garantir la disponibilitat del servei. Si s'admeten fitxers compressos (ZIP, etc.), cal verificar també cadascun dels fitxers després de descomprimir-los.
Implementeu un escaneig de virus immediatament després de la pujada (preferiblement amb diversos motors) i neutralitzeu fitxers PDF/Office amb CDR (Content Disarm & Reconstruct). És efectiu reencodejar imatges (carregar → generar nou fitxer) per eliminar dades no autoritzades incrustades.
Protegiu sempre la comunicació a través de TLS (HTTPS) i implementeu mesures com tokens CSRF. Afegiu al response de descàrrega Content-Disposition: attachment
i X-Content-Type-Options: nosniff
per evitar malfuncionaments del navegador.
Registreu amb detall qui, quan i quin fitxer s'ha gestionat, i configureu alertes per a comportaments anòmals (pujades freqüents o molts rebuigs). Mantindre un hash per a la integritat dels fitxers també és útil.
Després d'implementar, realitzeu proves de vulnerabilitats centrades en la pujada de fitxers (inserció de shells, evitació d'extensions, path traversal, etc.) i reviseu regularment.
Aquí presentem UploadF (uploadf.com), que ofereix un excel·lent confort d'ús amb compatibilitat amb PC i mòbils, suport per drag & drop i pujada de fins a 100 fitxers simultàniament, tot i que en la disseny de servei cal tenir en compte els següents punts d'atenció i ingeniositat.
Element de verificació | Punts a realitzar / verificar |
---|---|
Limitació de llista blanca d'extensions | Permetre només els formats necessaris. La llista negra s'usa de manera complementària. |
Comprovació de MIME / signatura | Verifiqueu que l'extensió coincideixi amb el contingut (comprovació de número màgic). |
Renomenament de fitxers | Substituïu per noms UUID o hash i gestioneu el nom original com a metadades. |
Eliminació de caràcters especials | Elimineu o rebutgeu `/`, `\`, `..`, NULL, etc. |
Directori de desament | Emmagatzemar fora de la ruta web o en un emmagatzematge d'objectes. |
Permisos de carpeta | Prohibit d'execució, permisos de lectura/escriptura mínims (principi de privilegi mínim). |
Fitxer màxim / mínim | Establiu límits clars i verifiqueu després de la descompressió de fitxers ZIP, etc. |
Control de pujades simultànies | Limitació de paral·lelisme, control de taxa, configuració de temps d'espera. |
Escaneig de virus / CDR | Escaneig immediat després de la pujada i neutralització si cal. |
Encriptació de comunicació (HTTPS) | Convertir TLS en un requisit (per prevenir atacs "man-in-the-middle"). |
Mesures contra CSRF | Introduir controls basats en tokens. |
Configuració d'encapçalaments de resposta | Afegeix Content-Disposition: attachment , X-Content-Type-Options: nosniff , etc. |
Registres i alertes | Auditeu les pujades i notifiqueu en casos d'anomalia. |
Revisions de seguretat periòdiques | Realitzeu proves de vulnerabilitats i penetració regularment. |
Borrat automàtic de fitxers antics | Disseny de supressió completa després d'un període de retenció. |
Control d'accés / autorització | Gestionar estrictament els permisos d'accés per unitat d'usuari / grup. |
La funcionalitat de pujada de fitxers ofereix tant comoditat com riscos. Integrar les mesures de defensa en profunditat (llista blanca, inspecció de signatura, separació de llocs de emmagatzematge, mesures contra malware, auditoria de registres, etc.) com es va indicar en aquest article pot reduir dramàticament els riscos d'atac.
És important que els usuaris sentin que el servei és "fàcil d'usar i segur". Per exemple, serveis com UploadF (uploadf.com), que ofereixen funcions com eliminacions individuals i configuracions de temps de retenció, creen una sensació de seguretat per als usuaris.
※ Aquestes són exemples de fonts consultades en el moment de redacció de l'article. Per a documents d'implementació més detallats i informació de les amenaces més actualitzades, consulteu la documentació oficial de cada font.