Classes de arquivo e varredura
Classes de arquivo
Seção intitulada “Classes de arquivo”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.
Varredura, quarentena e 451
Seção intitulada “Varredura, quarentena e 451”- 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 declean. - 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 responder451), o cache é purgado e o time é avisado. Em sistemas que dependem de uma URL, trate451como “indisponível por motivo de segurança”: não insista, avise uma pessoa. Consultescan.status/scan.reasonno detalhe do arquivo.
Por que meu SVG foi recusado e como reexportar
Seção intitulada “Por que meu SVG foi recusado e como reexportar”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.