Caminho no Gestor bibliotecas/arquivo.php
Funções puras (sem banco nem $_GESTOR) para quem recebe ou serve arquivos. O gerenciador admin-arquivos e o controlador arquivo-estatico as usam. Cada função só é declarada se ainda não existir.
Nomes
| Função | |
|---|---|
arquivo_nome_sanitizar($nome) |
Fica só com o nome (descarta pastas), troca : * ? " < > \| por -, remove controles e byte nulo, troca espaços por -, junta hífens repetidos e apara . e - das pontas. Acentos são mantidos. Pode devolver '' |
arquivo_nome_colisao($base, $ext, $n) |
foto-(2).jpg, já sanitizado |
Segurança
-
arquivo_extensao_perigosa($nome)étruepara.htaccess,.htpasswd,.user.inie para qualquer segmento de extensão executável ou de configuração (php,phtml,phar,cgi,py,sh,exe,jsp,asp,shtml,ini,conf…). Por olhar todos os segmentos, pegafoto.php.jpg. -
arquivo_caminho_relativo_seguro($rel)devolve o caminho relativo limpo oufalsepara byte nulo, caminho absoluto (/…,C:), qualquer..ou segmento que fique vazio. -
arquivo_caminho_resolver($base, $rel)junta os dois e, se o alvo já existe, confere comrealpath()que ele continua dentro da base (barra link simbólico para fora). Devolve o caminho com o separador do sistema oufalse.
Tipo e MIME
-
arquivo_tipo_por_extensao($nome):image,video,audiooufile. -
arquivo_mime_por_extensao($nome): o MIME de uma tabela fixa, ouapplication/octet-stream. Não lê o conteúdo do arquivo: um.pngque na verdade é outra coisa recebeimage/png. -
arquivo_mini_caminho_relativo($rel): onde fica a miniatura,<pasta>/mini/<arquivo>.
Funções
Gerado a partir de gestor/bibliotecas/arquivo.php · 12 funções
arquivo_nome_sanitizar
ver no código · linha 39 ↗arquivo_nome_sanitizar(string $nome): stringHigieniza um nome de arquivo ou pasta para uso seguro em sistemas de arquivos heterogêneos (Windows/Linux/rede).
Parâmetros
$nomestring- Nome cru informado pelo usuário ou upload.
Retorno
arquivo_nome_colisao
ver no código · linha 88 ↗arquivo_nome_colisao(string $nomeBase, string $ext, int $indice): stringNome de desempate quando o arquivo enviado colide com um já existente na pasta.
Parâmetros
$nomeBasestring- Nome já higienizado, sem extensão.
$extstring- Extensão sem o ponto (string vazia quando não há).
$indiceint- Contador de desempate (1, 2, 3...).
Retorno
arquivo_extensao_perigosa
ver no código · linha 106 ↗arquivo_extensao_perigosa(string $nome): boolVerifica se a extensão de um nome de arquivo é executável/perigosa e deve ser bloqueada no upload, mesmo que o usuário tente burlar a extensão.
Parâmetros
$nomestring- Nome do arquivo (com extensão).
Retorno
arquivo_caminho_relativo_seguro
ver no código · linha 147 ↗arquivo_caminho_relativo_seguro(string $rel): string|falseNormaliza um caminho relativo informado pelo cliente e garante que ele permanece dentro da árvore de conteúdos (previne path traversal).
Parâmetros
$relstring- Caminho relativo cru (pode vir vazio = raiz).
Retorno
/ (sem barra inicial/final),arquivo_caminho_resolver
ver no código · linha 191 ↗arquivo_caminho_resolver(string $base, string $rel): string|falseResolve o caminho absoluto de um relativo seguro sob uma base e confirma, via realpath quando o alvo existe, que ele não escapa da base.
Parâmetros
$basestring- Raiz absoluta de conteúdos (
$_GESTOR['contents-path']). $relstring- Caminho relativo (será validado por arquivo_caminho_relativo_seguro).
Retorno
arquivo_mini_caminho_relativo
ver no código · linha 225 ↗arquivo_mini_caminho_relativo(string $rel): stringDado o caminho relativo de um arquivo, retorna o caminho relativo da sua miniatura na subpasta física mini/ da mesma pasta.
Parâmetros
$relstring- Caminho relativo do arquivo original.
Retorno
/).arquivo_tipo_por_extensao
ver no código · linha 244 ↗arquivo_tipo_por_extensao(string $nome): stringClassifica o "tipo" de um arquivo (image/video/audio/file) a partir da extensão, sem depender de mime_content_type (que exige o arquivo em disco).
Parâmetros
$nomestring- Nome do arquivo.
Retorno
arquivo_mime_por_extensao
ver no código · linha 275 ↗arquivo_mime_por_extensao(string $nome): stringResolve o MIME type real de um arquivo a partir da extensão, sem depender de mime_content_type (que exige o arquivo em disco e a extensão fileinfo ativa).
Parâmetros
$nomestring- Nome do arquivo (com ou sem caminho).
Retorno
application/octet-stream para extensão desconhecida.arquivo_assinatura_confere
ver no código · linha 334 ↗arquivo_assinatura_confere(string $caminho, string $nome): boolConfere se o conteúdo de um arquivo bate com a extensão que ele declara (bytes mágicos).
Parâmetros
$caminhostring- Caminho absoluto do arquivo já gravado (ou temporário).
$nomestring- Nome do arquivo, de onde sai a extensão declarada.
Retorno
arquivo_svg_sanitizar
ver no código · linha 394 ↗arquivo_svg_sanitizar(string $conteudo): stringRemove de um SVG o que executa código quando o arquivo é aberto no navegador.
Parâmetros
$conteudostring- Conteúdo do SVG.
Retorno
arquivo_caminho_confinar
ver no código · linha 427 ↗arquivo_caminho_confinar(string $rel, string $escopo): stringMantém um caminho relativo dentro de uma pasta de escopo.
Parâmetros
$relstring- Caminho relativo pedido.
$escopostring- Pasta de escopo, relativa aos conteúdos ('' = sem restrição).
Retorno
arquivo_dir_tamanho
ver no código · linha 446 ↗arquivo_dir_tamanho(string $abs): intSoma o tamanho dos arquivos de uma pasta, recursivamente, sem as miniaturas (mini/).
Parâmetros
$absstring- Caminho absoluto da pasta.
Retorno
Upload e escopo do navegador de arquivos
arquivo_assinatura_confere compara extensão e assinatura do arquivo; SVG procura a tag svg e glTF exige JSON com asset, portanto não são validações completas desses formatos. arquivo_svg_sanitizar remove script, foreignObject, objetos/iframes, eventos on* e referências executáveis por expressões regulares; não equivale a um parser XML ou sanitizador geral. arquivo_caminho_confinar mantém caminho relativo na subárvore e volta à raiz do escopo quando inválido ou fora dela. arquivo_dir_tamanho soma recursivamente bytes, ignorando links simbólicos e miniaturas mini/.