Fallos del tipo CWE-566

8 resultados

Bypass de autorização através de chave primária SQL controlada pelo usuário

Ocorre quando a aplicação usa dados fornecidos pelo usuário (como ID de registro) diretamente em queries SQL para recuperar dados, sem validar se esse usuário tem permissão para acessar aquele registro específico. Um atacante manipula o ID na requisição e acessa dados de outros usuários.

Ejemplo

Uma aplicação web recebe o parâmetro 'user_id=5' na URL e executa 'SELECT * FROM pedidos WHERE id_usuario = 5'. Se um usuário autenticado muda a URL para 'user_id=7', a query retorna os pedidos do usuário 7 sem nenhuma verificação de proprietário, expondo dados sensíveis.

Cómo mitigar

Sempre validar no backend se o ID solicitado pertence ao usuário logado, antes de executar a query. Implementar controle de acesso baseado em sessão/token: recuperar o ID do usuário da sessão autenticada, nunca confiar no parâmetro do cliente, e usar prepared statements para evitar injeção SQL como bônus.