Endurecer a segurança da API seguindo um padrão técnico, sem quebrar o uso atual #34

Closed
opened 2026-10-10 18:59:14 -03:00 by caio · 1 comment
Owner

Revisar autenticação e autorização da API seguindo um padrão reconhecido (OWASP API Security Top 10; RFC 6750/7235/6585 pros códigos e cabeçalhos de erro), mantendo o app funcionando do jeito que funciona hoje (X-API-Key + X-Session-Token).

Os detalhes do que foi encontrado e corrigido ficam no commit e na documentação.

Revisar autenticação e autorização da API seguindo um padrão reconhecido (OWASP API Security Top 10; RFC 6750/7235/6585 pros códigos e cabeçalhos de erro), mantendo o app funcionando do jeito que funciona hoje (`X-API-Key` + `X-Session-Token`). Os detalhes do que foi encontrado e corrigido ficam no commit e na documentação.
caio added this to the Argos project 2026-10-10 19:00:41 -03:00
Author
Owner

Feito em e47ec62 (develop). Modelo e padrões seguidos em docs/SEGURANCA-API.md.

  • Toda chave de API tem escopo: app (só as rotas do app, sempre com a sessão do aluno) ou admin (também os endpoints administrativos). Chave de app em endpoint administrativo recebe 403.
  • GET /api/retiradas.php exige sessão ou chave admin; busca por id confere o esquadrão.
  • Erros no padrão: 401 + WWW-Authenticate, 403 + insufficient_scope, 429 + Retry-After; sessão aceita também em Authorization: Bearer; no-store e nosniff em toda resposta.
  • A PWA continua funcionando igual: as chaves existentes viram app na migration 015. Integração que precise dos endpoints administrativos gera uma chave admin em Ikarus37 → API.

13 testes novos cobrindo isso em tests/api_test.php. CI verde nos dois runners: run 27.

Feito em e47ec62 (`develop`). Modelo e padrões seguidos em `docs/SEGURANCA-API.md`. - Toda chave de API tem **escopo**: `app` (só as rotas do app, sempre com a sessão do aluno) ou `admin` (também os endpoints administrativos). Chave de app em endpoint administrativo recebe `403`. - `GET /api/retiradas.php` exige sessão ou chave admin; busca por `id` confere o esquadrão. - Erros no padrão: `401` + `WWW-Authenticate`, `403` + `insufficient_scope`, `429` + `Retry-After`; sessão aceita também em `Authorization: Bearer`; `no-store` e `nosniff` em toda resposta. - **A PWA continua funcionando igual**: as chaves existentes viram `app` na migration 015. Integração que precise dos endpoints administrativos gera uma chave `admin` em Ikarus37 → API. 13 testes novos cobrindo isso em `tests/api_test.php`. CI verde nos dois runners: [run 27](https://cosmos.simioni.dev.br/cidit/projeto-argos/actions/runs/27).
caio closed this issue 2026-10-10 19:16:37 -03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
cidit/projeto-argos#34
No description provided.