Conn2Flow
Navegação das docs

SDD

Requisição 189 — Segurança do `interface`: SQL injection na listagem e excluir/status sem CSRF

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…

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

  1. A1 — SQL injection na busca e na ordenação da listagem (interface_listar_ajax()). O WHERE/ORDER BY era montado com columns[i][data], columnsExtraSearch e search[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). O columns do DataTables serve apenas de índice.

    • Nome de coluna precisa ser identificador simples (interface_listar_coluna_segura).

    • O termo é escapado, com % e _ literais.

  2. A2 — excluir e status por GET sem CSRF. A validação global só cobre POST/PUT/PATCH/DELETE, e com o cookie SameSite=Lax um 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 e window.interfaceUrlCsrf() no interface.js/interface-v2.js.

  3. Documentação: reference/libraries/interface.md e seguranca.md (pt-br e en) perdem os avisos e passam a descrever o comportamento novo.

Critérios de aceite

  1. 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.

  2. Excluir e status sem token ou com token errado não alteram nada e avisam; com o token da sessão seguem.

  3. No Lab, listagem com busca e ordenação funcionando; excluir e status pelos botões do painel funcionando; link sem token recusado.

  4. Suíte PHP e Vitest verdes; docs:audit sem 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.

O Futuro é Híbrido: Humano + IA.

O Conn2Flow é a ferramenta. Se você precisa do Arquiteto para desenhar a estratégia da sua empresa usando essa tecnologia...

Contrate Consultoria Especializada