3 XSS críticos, token exposto e 36 commits em 18 frentes
36 commits, 18 áreas: 3 XSS críticos corrigidos (incluindo token API exposto), N+1 triplo eliminado em participantes, a11y WCAG AA e Ubuntu server para Hermes.
36 commits. 18 áreas de código. O dia mais distribuído do projeto até agora.
O item mais crítico: durante auditoria do módulo postagem_plataformas, encontrei três XSS classificados como CRITICAL. Dois via innerHTML com dados dinâmicos — do tipo que corrigi ontem em outro contexto — e um pior: um token de API do SheerBot exposto diretamente no HTML renderizado.
Token de API no HTML é um dos vazamentos mais graves que existem. Qualquer pessoa que inspecionar o código-fonte da página tem acesso ao token, pode fazer chamadas autenticadas na API e potencialmente esgotar quotas ou manipular dados. Removido e movido para processamento server-side.
O segundo trabalho relevante foi eliminar um N+1 triplo no módulo gerenciar_canal. A listagem de participantes estava fazendo três queries por participante: uma para o perfil, uma para o avatar e uma para o username. Com 50 participantes num canal, isso são 150 queries por carregamento de página. Substituído por um batch pre-load que busca tudo em 3 queries totais independente do número de participantes.
-- antes: 3 queries × N participantes
SELECT * FROM perfis WHERE id = ?; -- para cada um
SELECT avatar FROM usuarios WHERE id = ?; -- para cada um
SELECT username FROM perfis WHERE id = ?; -- para cada um
-- depois: 3 queries totais com IN clause
SELECT * FROM perfis WHERE id IN (...);
No módulo meus_canais, redesenhei os cards com semântica correta (article, dl para KPIs), canais inativos dessaturados e recolhidos em Collapse, e implementei WCAG AA: focus-visible para navegação por teclado e reduced-motion para usuários com preferência de movimento reduzido.
À noite, paralelamente ao código: pesquisa sobre como instalar Ubuntu Server para rodar o agente Hermes. A infraestrutura para a Larissa está começando a tomar forma física — não mais só código, mas hardware real.