Origem: Humano, 2026-09-28, ao ler a doc publicada /docs/reference/libraries/interface/: "corrigir esse problema, trazendo o backlog para uma nova requisição, e atualizar a documentação para tirar esse escrito". Promove os itens A1 e A2 da req-181, agrupados no BL-018.
Lote Vinculado: BATCH-193.
Status: approved (Humano, 2026-09-28), implementada.
Itens
-
A1 — SQL injection na busca e na ordenação da listagem (
interface_listar_ajax()). OWHERE/ORDER BYera montado comcolumns[i][data],columnsExtraSearchesearch[value]do$_REQUEST, sem escape nem lista de permissão: qualquer usuário com acesso a uma listagem lia outras tabelas.-
Correção: colunas, ordenação e colunas extras vêm só da configuração da listagem guardada na sessão pelo servidor (
interface_listar_tabela). Ocolumnsdo DataTables serve apenas de índice. -
Nome de coluna precisa ser identificador simples (
interface_listar_coluna_segura). -
O termo é escapado, com
%e_literais.
-
-
A2 — excluir e status por GET sem CSRF. A validação global só cobre POST/PUT/PATCH/DELETE, e com o cookie
SameSite=Laxum link aberto por um administrador logado excluía ou desativava registros.-
Correção:
interface_excluir_iniciar()/interface_status_iniciar()exigem o token da sessão na query (interface_acao_get_exigir_csrf). -
Links do painel recebem o token:
interface_url_csrf()nos botões renderizados pelo servidor ewindow.interfaceUrlCsrf()nointerface.js/interface-v2.js.
-
-
Documentação:
reference/libraries/interface.mdeseguranca.md(pt-br e en) perdem os avisos e passam a descrever o comportamento novo.
Critérios de aceite
-
Teste que reproduz a injeção e passa a falhar no código novo: coluna, ordenação e coluna extra vindas do request não entram no SQL; o termo sai escapado.
-
Excluir e status sem token ou com token errado não alteram nada e avisam; com o token da sessão seguem.
-
No Lab, listagem com busca e ordenação funcionando; excluir e status pelos botões do painel funcionando; link sem token recusado.
-
Suíte PHP e Vitest verdes;
docs:auditsem avisos.
Fora do escopo
Demais itens da req-181 (A3 a A11) e os complementos do BL-018 seguem no backlog para revisão do Humano.