Registo de alterações

NeoFrag Reborn 1.2.48

Luandre 9 out. 2026 9 min de leitura 24
Sumário
Sumário

Um lote grande: uma auditoria de segurança (acessos, injeções, contas, ficheiros), uma moderação que finalmente funciona — as suas sanções aplicam-se agora a tudo o que os membros escrevem —, um novo endereço de e-mail confirmado antes de contar, a eliminação das contas inativas, e o início de sessão com Discord, GitHub ou Google reparado. O bot do Discord passa para a versão 0.2.5 (vê o seu próprio registo de alterações). Num site em HTTPS, toda a gente volta a iniciar sessão uma vez depois da atualização: o cookie de sessão muda de nome.

Segurança

  • A pesquisa do fórum, aberta aos visitantes, permitia uma injeção SQL através de uma palavra escrita entre aspas; a pesquisa das mensagens privadas tinha a mesma falha. Essa palavra é agora limpa como as outras, e escapada pela própria base de dados.
  • Um envio vindo de outro site é recusado (POST, PUT, DELETE…), conforme o que o navegador diz (Sec-Fetch-Site, senão Origin): uma página armadilhada já não consegue pôr um membro com sessão iniciada a agir sem o saber. Um cliente sem navegador — o bot, um serviço de pagamento — não é afetado.
  • Vinte ações que mudavam algo com uma simples ligação exigem agora o token de sessão, ou só aceitam POST: seguir um tópico, torná-lo um anúncio, marcar tudo como lido, sair de uma conversa, arquivá-la, eliminá-la ou restaurá-la, reagir, marcar as notificações como lidas, dar a sua disponibilidade para um evento, abrir ou fechar o site e as inscrições, lançar uma cópia de segurança ou uma atualização, eliminar um campo de recrutamento… Terminar a sessão por uma ligação sem token pede uma confirmação com um botão.
  • Em HTTPS, para um site instalado na raiz do seu domínio, o cookie de sessão tem o prefixo __Host-: um subdomínio (uma demonstração, um webmail) já não o recebe e já não consegue impor um. Um site instalado numa subpasta mantém um cookie sem este prefixo, que só muda de nome.
  • Contas:
    • a ligação «palavra-passe esquecida» funcionava também como ligação de confirmação da inscrição, que inicia sessão sem pedir nada durante dois dias: cada ligação só funciona agora para o seu próprio fim;
    • mudar a palavra-passe anula um novo endereço pendente e as ligações «palavra-passe esquecida»;
    • as falhas de início de sessão contam-se por conta — seja como for que esteja escrita — e por rede: um endereço IPv6 conta pela sua rede /64, em todos os limites de tentativas do site;
    • ligar a autenticação de dois fatores ou ligar uma conta Discord, GitHub ou Google volta a pedir a palavra-passe; cinco erros bloqueiam esta confirmação durante um quarto de hora;
    • «palavra-passe esquecida» responde o mesmo quer um endereço esteja registado quer não, e a inscrição só diz que um endereço já está ocupado cinco vezes por hora e por rede;
    • o histórico de inícios de sessão regista o endereço da ligação, já não um cabeçalho que o navegador escolhe.
  • Doze fugas de acesso fechadas: o histórico e as revisões de uma página da wiki em rascunho; as categorias VIP do fórum, através da pesquisa e dos perfis; os grupos ocultos; a imagem de um álbum fechado; os jogos de um tipo restrito; a presença que os participantes tinham escondido; os comentários e reações sobre conteúdo oculto; denunciar uma conversa de que não se faz parte.
  • Dois endereços antigos das mensagens privadas devolviam as mensagens de qualquer conversa, mesmo privada, a qualquer pessoa com o direito de leitura — visitantes incluídos: retirados. Publicar uma imagem na galeria só exigia o direito de ver o álbum.
  • Os anexos do fórum e das conversas são servidos pelo site, a quem pode ler o tópico ou a conversa, já não pelo servidor web a quem tivesse o seu endereço. Uma imagem ou um PDF é mostrado, tudo o resto é transferido; um anexo que um navegador executaria é recusado no envio. No Apache, o upload/.htaccess incluído trata disso; no nginx ou no Caddy, copia para a configuração do teu servidor a regra que bloqueia upload/forum/ e upload/talks/ (vê os nginx.conf e Caddyfile incluídos).
  • O que o servidor vai buscar ele próprio (retransmissão de imagens, feeds RSS, webhooks) fica limitado a endereços estritamente públicos, nas portas 80 e 443.
  • As chaves do Stripe já não se leem em claro na administração: guardadas cifradas, nunca mais mostradas.
  • Demonstração: os endereços IP dos visitantes, os nomes de anfitrião e os sites de origem já não são lá mostrados; um anúncio, uma ligação, um parceiro que leva para fora do site é mostrado numa página que diz para onde leva, em vez de redirecionar para lá.
  • Uma ligação javascript: já não pode aparecer no lugar de um endereço: a página de onde vinha uma sessão (administração), as ligações de um jogo (site do adversário, stream, artigo). A ligação que uma denúncia dá para o conteúdo denunciado só pode levar a uma página do site.

Adicionado

  • Um novo endereço de e-mail espera pela sua confirmação: a ligação vai para o novo endereço (válida dois dias), o antigo é avisado, e «A minha conta» propõe reenviar a ligação ou cancelar. Até agora, uma gralha deixava o membro sem nada do que o site envia.
  • As contas inativas são eliminadas: sem visitas há três anos — ajustável em Definições, 0 para nunca —, um e-mail avisa o membro um mês antes, uma visita anula tudo. Nunca um administrador.
  • Sancionar um membro sem esperar por uma denúncia, a partir do seu histórico de moderação, para o qual a sua página de administração remete.
  • O botão de denúncia (a bandeirinha «Denunciar este conteúdo») no livro de visitas, nas imagens da galeria, nos classificados, nos tickets e nos seus comentários.
  • «As minhas sanções» na área de membros, para quem teve uma no ano: o seu tipo, o seu motivo, o seu período.
  • A mediação: a partir de uma denúncia, o moderador propõe uma conversa privada entre ele, o membro denunciado e quem denunciou. O membro denunciado verá lá quem o denunciou, por isso só se abre com o acordo de quem denunciou, dado numa página que explica o que aceita; se recusar, a sua denúncia continua anónima e segue como habitualmente.

Corrigido

  • As sanções de moderação aplicam-se a tudo o que os membros escrevem: fórum, mensagens privadas, comentários, livro de visitas, Gestor de bugs, recrutamento, classificados, galeria, perfil, imagens enviadas no editor de texto. Só se verificava o silêncio do fórum e das mensagens, e depois do envio. O formulário dá lugar a um aviso que diz o que a sanção proíbe, até quando e porquê; a sanção «Restrição: ligações» recusa um texto que tenha uma ligação, sem o perder.
  • Não se podia aplicar nenhuma sanção a partir do ecrã de moderação: um erro interno impedia-o, por isso a escalada automática nunca disparava. Revistos ao mesmo tempo: as definições (caixas que não se podiam desmarcar, limiar de denunciante suspeito), os âmbitos, as durações (um banimento temporário sem duração tornava-se definitivo), a validação por um moderador de posição superior, o painel dos moderadores, as denúncias duplicadas, as páginas a partir da 2, a lista de IP. Um moderador já não pode levantar uma sanção que o visa, nem a de um membro de posição igual ou superior, nem uma aplicada por um moderador de posição superior.
  • O shadow ban funciona: o que escreve um membro com shadow ban só é mostrado a ele e aos moderadores, e nada é difundido — nenhuma notificação, nada de Discord, nenhum subscritor.
  • Um cargo adicional — Moderador — retirava direitos a um membro: um moderador perdia o fórum e as mensagens privadas. Um cargo acrescenta direitos, já não retira nenhum.
  • Os e-mails são enviados na língua de quem os recebe — sanções, respostas no fórum, mensagens privadas —, já não na do membro que os provocou.
  • O início de sessão com Discord, GitHub ou Google falhava assim que um serviço estava configurado (a biblioteca OAuth tinha mudado), e enviava ao serviço um endereço de regresso que ele recusava. Um regresso recusado diz agora porquê em vez de uma página de erro, e o avatar do Discord volta a ser importado.
  • Livro de visitas, administração: aprovar, rejeitar ou eliminar uma mensagem levava a um erro «página não encontrada».
  • O erro de um campo de formulário é escrito por baixo do campo, num telemóvel como num computador: só se podia ler numa dica ao passar o rato.
  • A barra superior da administração fica no topo ao deslocar; num telemóvel, só o menu e o trilho de navegação ficam fixos.
  • Trinta e quatro erros de tradução em doze ficheiros de língua («There are 1 user», confirmações de eliminação que mostravam < br / >, plurais ingleses…).
  • O endereço do sítio web declarado por 48 addons do núcleo é o do projeto, já não o do NeoFrag original. A página Modelos de email da administração já não lista os modelos de um módulo não instalado. Um erro em alguns formulários (limite do livro de visitas atingido, eliminação da conta, autenticação de dois fatores, palavra-passe, criação de um membro na administração) já não leva a um erro «página não encontrada».
  • Demonstração: um membro comum não podia abrir um tópico, responder em lado nenhum nem candidatar-se a nada.
  • A exportação «Os meus dados» inclui as denúncias que o membro fez: faltavam no arquivo.

Alterado

  • Um widget ligado a um módulo depende agora dele (21 widgets): sem esse módulo, ou se estiver desativado, o widget já não é mostrado e o Editor ao vivo já não o oferece; «Adicionar» recusa um arquivo de widget sem o seu módulo.
  • A documentação do produto já não é incluída na wiki de um site novo, que chega vazia; vive no site do projeto. Uma instalação nova já não recebe as definições de temas que não tem.

Removido

  • Os antigos endereços ajax/talks das mensagens privadas, e a sua antiga denúncia de mensagens, que só escrevia no registo de auditoria, com a sua página de administração «Denúncias de mensagens»: uma mensagem denuncia-se agora através da moderação.

Leia também

0
Comentários

Gerir os meus cookies

O site só instala os cookies necessários ao seu funcionamento: não exigem o seu consentimento. Os outros serviços pertencem a outras empresas; só são carregados se os aceitar. A sua escolha é guardada durante seis meses, e pode alterá-la a qualquer momento.

Necessários ao site Sempre ativos

  • __Host-session Mantém a sua sessão iniciada e protege os formulários contra envios fraudulentos. Até fechar o navegador; um ano com «Lembrar-me»
  • nf_consent Guarda as escolhas que faz nesta janela. 6 meses
  • nf_fuseau Mostra as datas e as horas no seu fuso horário. 1 ano
  • Armazenamento do navegador Guarda a sua escolha entre o modo dia e o modo noite, e a apresentação escolhida para a lista de artigos. Até que o limpe

Vídeos

Os vídeos integrados nas páginas: o leitor vem da plataforma, que recebe o seu endereço IP e pode instalar os seus cookies.

Música

As faixas e listas de reprodução integradas nas páginas: o leitor vem da plataforma, que recebe o seu endereço IP e pode instalar os seus cookies.