Weaknesses of type CWE-783
20 resultsErro de precedência de operadores
Ocorre quando o desenvolvedor assume uma ordem de avaliação diferente da que a linguagem de fato executa, causando lógica incorreta em expressões com múltiplos operadores. O risco é contornar validações, acessar dados não autorizados ou executar código inesperado porque a condição não funciona como planejado.
Um código valida acesso assim: `if (user.isAdmin || user.isEditor && user.isActive)`. A intenção era 'admin OU (editor E ativo)', mas a precedência faz avaliar como 'admin OU (editor E ativo)', deixando editors inativos passarem se forem também admins. Resultado: falha na autorização.
Use parênteses explícitos em toda expressão booleana complexa, deixando clara a intenção, e revise lógica de acesso com especial atenção a operadores `||` e `&&` lado a lado. Testes de segurança (testes de limite de autorização) pegam essas falhas rapidamente.