Pular para o conteúdo

Classes de arquivo e varredura

A classe vem do conteúdo (magic bytes), nunca da extensão nem do Content-Type enviado.

Classe Exemplos Servido como
image png, jpeg, webp, gif, avif inline, transformável (?w=, ?q=)
svg svg inline só se passar na varredura de SVG, sempre com CSP restritiva (default-src 'none'; sandbox)
font woff2, woff, ttf, otf inline, CORS *
media mp4, webm, mp3, ogg inline, com Accept-Ranges
document pdf, txt, csv, json download (Content-Disposition: attachment); texto sempre text/plain
markup html, htm, xhtml, xml nunca renderiza: download + text/plain + CSP sandbox
archive zip, tar.gz download; cifrado ou impossível de varrer é recusado
binary exe, msi, dmg, apk, deb, appimage, desconhecido download, application/octet-stream

As URLs são sem cookies, com X-Content-Type-Options: nosniff; CORS * só para image e font. Não use um arquivo de download (document, markup, archive, binary) como <script>/<iframe>: ele não renderiza por desenho.

  • Todo arquivo entra em quarentena e só é publicado depois de clean: antivírus, regras YARA, reputação por hash (só o hash sai da nossa infraestrutura, nunca o conteúdo), decodificação de imagens em sandbox e varredura específica de SVG. Nada é publicado antes de clean.
  • Detectado ⇒ recusado (422), com auditoria. A amostra não é guardada.
  • Se o scanner estiver fora do ar, o upload fica pending (202) e não é publicado (fail-closed).
  • Nova varredura diária de tudo que está publicado, com as assinaturas do dia. Um arquivo que passou ontem pode ser detectado hoje: ele muda para quarantined, sai do ar (a CDN passa a responder 451), o cache é purgado e o time é avisado. Em sistemas que dependem de uma URL, trate 451 como “indisponível por motivo de segurança”: não insista, avise uma pessoa. Consulte scan.status / scan.reason no detalhe do arquivo.

O SVG é um arquivo ativo (pode conter script), então só publicamos SVG estático, sem limpar nem alterar nada: o que vai ao ar é o arquivo exatamente como você enviou. O 422 svg_unsafe traz reasons[] com códigos do scanner; a orientação é a mesma que o painel mostra:

Se o motivo for… O que significa Como resolver
script, eventos ou links externos (script_element, event_handler_attr, dangerous_scheme, external_or_unsafe_url, xml_base, form_element, embed_element, media_element, link_meta_element, …) O SVG contém script, atributos de evento (onclick, onload…) ou referências a URLs externas. Remova scripts/onclick e referências a URLs externas. Só aceitamos SVG estático.
CSS externo (style_type, css_*) O CSS do SVG referencia recursos externos ou ativos (url() externo, @import, expression). Use estilos sem url() externo.
imagem embutida (data_uri_not_allowed, data_uri_magic_mismatch) Imagem embutida não permitida. Só PNG/JPEG/GIF/WebP em base64 são aceitos como imagem embutida.
Illustrator / HTML embutido (foreign_namespace_element, html_element, ns_forbidden, ns_prefix_spoof, metadata_ns_outside_metadata) O SVG foi salvo com “Preservar recursos de edição do Illustrator” ou contém HTML embutido. No Illustrator: Arquivo → Exportar → Exportar para telas (SVG), ou Salvar como SVG desmarcando “Preservar recursos de edição”.
DOCTYPE/ENTITY antigo (doctype_entity, doctype_internal_subset, doctype_not_allowed, doctype_too_long, directive_not_allowed, processing_instruction) O SVG tem um cabeçalho <!DOCTYPE …> / <!ENTITY …> antigo. Reexporte como SVG 1.1 (Illustrator: Exportar para telas; Inkscape: Salvar como → SVG otimizado) ou remova o bloco <!DOCTYPE …>.
tamanho (too_large, too_deep, too_many_elements, too_many_attrs, name_too_long, css_too_large) O SVG é grande ou complexo demais. Simplifique/otimize (ex.: SVGO) e envie de novo.
formato (xml_malformed, no_root, not_svg_root, multiple_roots, text_outside_root, duplicate_attribute, odd_attr_name, odd_element_name, deprecated_element, attr_namespace, style_element) O arquivo não é um SVG válido ou bem formado. Reexporte do editor.

Quando houver vários motivos, resolva primeiro os de segurança (script/eventos/links, CSS, imagem embutida), depois os de exportação (Illustrator, DOCTYPE), depois tamanho e formato. Códigos que não estão na tabela: reexporte como SVG 1.1 estático e, se persistir, denuncie o problema ao time com o reasons recebido.