Weaknesses of type CWE-564

10 results

Injeção SQL em Hibernate

Ocorre quando dados não validados ou não parametrizados são concatenados diretamente em queries HQL (Hibernate Query Language) ou em SQL nativo executado via Hibernate, permitindo que um atacante injete código SQL malicioso. O framework não sanitiza automaticamente — a responsabilidade é do desenvolvedor usar queries parametrizadas.

Example

Um formulário de busca recebe um nome e o código faz `session.createQuery("FROM Usuario WHERE nome = '" + nomeBuscado + "'")`. Se nomeBuscado for `' OR '1'='1`, a query retorna todos os usuários. Pior: um atacante pode deletar tabelas ou roubar dados.

How to mitigate

Use HQL parametrizado com setParameter() ou setString(), ou SQL nativo com NamedParameterStatement. Exemplo: `session.createQuery("FROM Usuario WHERE nome = :nome").setParameter("nome", nomeBuscado)`. Nunca concatene entrada de usuário direto na query.