Contactar o apoio

Respondemos por e-mail, normalmente em dois dias.

Para prevenir abusos, o Google reCAPTCHA verifica este envio; alguns dados são transmitidos ao Google. O script só é carregado quando abre este formulário.

← Todos os artigos

Quando «pl» significava duas coisas diferentes

Em 19 de agosto de 2026 adicionámos uma regra ao .htaccess a bloquear uma classe de ficheiros que nunca deveria ser servida diretamente a um navegador: cópias de código-fonte esquecidas na raiz do site depois de uma edição — index.php.bak, um config.py perdido, qualquer coisa com uma extensão de script em que um visitante pudesse obter o código-fonte como texto simples em vez de o executar.

A regra funcionava por extensão de ficheiro: .php, .py, .rb, .pl, e mais uma dúzia de outras. .pl é Perl. Este projeto não tem uma única linha de Perl — a regra era preventiva, não a correção de um ficheiro que existisse.

Cerca de um dia depois, um visitante relatou que as pré-visualizações dos contadores estavam avariadas. Todas elas, mas apenas num idioma.

O outro «pl»

O stats4u.net escolhe um idioma por visitante através de negociação Accept-Language, não de um padrão fixo — um navegador configurado para polaco recebe diretamente /pl/, sem redirecionamento envolvido, e o inglês é para onde o site recua quando nada corresponde. O polaco é uma correspondência comum: aterram lá visitantes suficientes para que um dia de miniaturas avariadas nunca fosse passar despercebido por muito tempo.

Cada pré-visualização de modelo é um pequeno ficheiro por estilo e idioma: cache/preview/2900.pl.svg. O padrão pensado para apanhar something.pl — um script Perl — também correspondia a 2900.pl seguido de .svg: um número de estilo, um código de idioma que por acaso se escreve igual a uma extensão de script, e depois o tipo de ficheiro real. Um padrão ponto-pl-ponto não consegue distinguir as duas coisas.

Todas as pré-visualizações .pl.svg e .pl.png na galeria passaram a responder 403 Forbidden. Todos os outros idiomas ficaram intactos, porque nenhum outro código de idioma usado neste site colide com uma entrada na lista de extensões. Só este.

O que mudou

pl saiu da lista de extensões. Continua a bloquear todas as extensões de script reais com que este projeto tem razão para se preocupar; deixou de bloquear um idioma.

Vale a pena registar pela razão de ter acontecido: uma lista de extensões de ficheiro e uma lista de códigos de idioma vêm de dois vocabulários diferentes, e nada impede que uma entrada de duas letras signifique as duas coisas ao mesmo tempo. Antes de acrescentar a qualquer uma das listas, num site com prefixos de idioma no caminho, verifique-a contra a outra. Nós não o fizemos, e foi preciso um leitor reparar em miniaturas avariadas — não a nossa própria monitorização — para o detetar.