KB-PLUGIN-044: gotcha do right custom (relogin) e gate por right nativo (padrao butterfly) - incidente mindscrum 1.0.0/1.0.1
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
2001dbfc0c
commit
0c6d70c1c9
1 changed files with 16 additions and 0 deletions
|
|
@ -98,6 +98,22 @@ e são testáveis em CLI.
|
||||||
Teste E2E que prova: sessão com `ticket => READ` (sem READALL) deve ver só os
|
Teste E2E que prova: sessão com `ticket => READ` (sem READALL) deve ver só os
|
||||||
chamados onde é ator; sessão com rights zerados deve ter toda mutação negada.
|
chamados onde é ator; sessão com rights zerados deve ter toda mutação negada.
|
||||||
|
|
||||||
|
## Right CUSTOM exige relogin de TODOS — gate por right NATIVO evita (padrão butterfly)
|
||||||
|
|
||||||
|
Incidente em produção (mindscrum 1.0.0): right custom (`plugin_mindscrum_board`)
|
||||||
|
gravado em `glpi_profilerights` no install, mas o GLPI carrega rights na sessão
|
||||||
|
**no LOGIN** — o menu apareceu SÓ para quem instalou; todos os outros usuários
|
||||||
|
(inclusive super-admins) precisariam de logout/login. Sintoma: "o plugin só
|
||||||
|
aparece para quem instalou".
|
||||||
|
|
||||||
|
Solução (1.0.1, replicando o butterfly): **gate por right NATIVO** já presente
|
||||||
|
em toda sessão — `Board::$rightname = 'ticket'` (menu/leitura = `ticket READ`;
|
||||||
|
edição = `ticket UPDATE`) + guardas por item (`canUpdateItem` etc.). Sem classe
|
||||||
|
Profile, sem `change_profile`, sem relogin. Regra prática: só crie right custom
|
||||||
|
se o plugin precisa de permissão que NENHUM right nativo representa — e aceite o
|
||||||
|
custo do relogin pós-install; para ferramentas sobre itens nativos (board de
|
||||||
|
tickets/projetos), o right nativo do item é o gate certo.
|
||||||
|
|
||||||
## Bônus — XSS de atributo em JS de plugin
|
## Bônus — XSS de atributo em JS de plugin
|
||||||
|
|
||||||
`div.textContent = s; return div.innerHTML` escapa `& < >` mas **não aspas** —
|
`div.textContent = s; return div.innerHTML` escapa `& < >` mas **não aspas** —
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue