Carregador de fitxers

Per què la pujada de fitxers comporta riscos?

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:

  • Pujada/execució de web shells — Pujar un script maliciós per al control remot.
  • Fitxers amb malware — Danys secundaris que infecten altres usuaris.
  • Path traversal — Es poden guardar fitxers en llocs no desitjats mitjançant especificacions de camí no autoritzades.
  • DoS (bombes ZIP, fitxers de gran volum) — Agotar l'emmagatzematge o el processament.
  • Enganys d'extensió/MIME — Bypass per mitjà de dobles extensions com .jpg.php o engaüfs del Content-Type.
  • XSS a través de vista prèvia — S'executen scripts durant la visualització prèvia de SVG/HTML.

La base de la contramesura és un "defensa en profunditat". És eficaç dissenyar diverses capes de defensa sense dependre d'una sola contramesura.

Mesures: Principis a tenir en compte a la fase de disseny

Comprovacions estrictes d'extensions i MIME (mètode de llista blanca)

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.

Seguretat del nom de fitxer / Renomenament

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.

Control de llocs d'emmagatzematge i permisos

É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ó.

Limitació de la mida i control de pujades simultànies

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.

Escaneig de malware / Neutralització de contingut (CDR)

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.

HTTPS / Protecció de la comunicació & mesures contra CSRF

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.

Registres, auditoria i mecanismes d'alerta

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.

Prova de vulnerabilitats / Test de penetració

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.

Anàlisi amb UploadF com a exemple

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.

Llistat de verificació d'implementació (perspectiva de disseny segur)

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.

Resum i perspectiva de l'usuari

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.

Fonts i referències (algunes)

  1. OWASP — Fitxa d'errors de pujada de fitxers
  2. OPSWAT — Protecció de pujada de fitxers / millors pràctiques
  3. PortSwigger — Vulnerabilitats de pujada de fitxers
  4. Institut SANS — Orientació per a pujada de fitxers segura
  5. UploadF (uploadf.com) — Pujador de fitxers (pàgina de presentació)

※ 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.


Inici   Ajuda   Contacte   🌐Language  
©Carregador de fitxers