Skip to content

Releases: aryribeiro/ary-block

Release list

Ary Block 1.0.2

Choose a tag to compare

@aryribeiro aryribeiro released this 15 Sep 02:26

Primeira versão pública do Ary Block, já em produção no Direto Notícias.

O que ele faz

Portão de upload. Para quem está abaixo de administrador, recusa na biblioteca de mídia os formatos bloqueados e os arquivos acima do limite, com uma mensagem que diz o número — e que, no caso de vídeo, ensina o caminho do YouTube em vez de só barrar. Administradores e publicações automáticas (cron, WP-CLI, REST) nunca são bloqueados.

Colar imagem. Ctrl+V de uma imagem no editor clássico, na aba Visual ou na aba Texto: o navegador converte para JPEG, o servidor reconverte sem confiar no cliente, e o arquivo é gravado na biblioteca de mídia anexado à notícia. O editor de blocos resolveu isso; o editor clássico nunca resolveu.

Endurecimento desta versão

Uma revisão de segurança feita antes de abrir o código encontrou três problemas, todos corrigidos aqui:

  • Capacidade errada na rota de colagem. Ela exigia edit_posts, mas quem grava na biblioteca de mídia precisa de upload_files — e o papel Colaborador tem a primeira sem ter a segunda. Como media_handle_sideload() não confere capacidade nenhuma, aquela linha era a única guarda até a biblioteca.
  • O portão falhava aberto para apelidos de extensão. O WordPress aceita jpg|jpeg|jpe, mov|qt, mp3|m4a|m4b e gz|gzip como chaves compostas, e a tabela não cobria os apelidos. Extensão fora da tabela era aceita sem limite nenhum: bastava renomear um vídeo para .ogv ou .mpg para subi-lo em qualquer tamanho. Agora cada apelido herda a regra do seu formato canônico, e um teste roda o filtro contra a tabela real do núcleo exigindo que nenhuma das 70 extensões sobreviventes caia no caminho sem limite.
  • Consumo de recurso sem teto. Teto de 50 megapixels na entrada, contra bomba de descompressão; conferência do tamanho anunciado antes de baixar imagem por endereço; e a normalização passou de até 24 decodificações do arquivo original para no máximo 6.

Também entraram um grupo novo de código e executáveis bloqueado por padrão (HTML na biblioteca vira página no próprio domínio), suporte a AVIF como imagem aceita, e Update URI no cabeçalho para que o slug não seja sequestrado por um plugin homônimo publicado no diretório oficial.

Instalação

Baixe ary-block.zip abaixo e instale por Plugins › Adicionar novo › Enviar plugin. Requer PHP 8.1 e WordPress 6.0 ou superior; testado no WordPress 7.0.

95 testes, 246 asserções.