Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Prevenção de injeção de SQL com consulta dinâmica SQL ALTER USER


Você não deve tentar impedir a injeção de SQL apenas no nível do banco de dados. Uma vez que eles chegaram lá, eles já pegaram você. Você deve usar parâmetros, entrada de máscara e remover caracteres ruins já na camada acima. Ferramentas (Frameworks?) como Entity Framework removem automaticamente caracteres perigosos.

Usando DBMS_ASSERT.ENQUOTE_NAME está indo muito bem aqui, mas eu recomendo fazer isso também nas camadas acima.

Regra geral (que você segue aqui):Use mecanismos de segurança estabelecidos e comprovados, não os reinvente!

Além disso, uma afirmação como
select * from users where username = 'IAm"WayUp';

é absolutamente legal e não perigoso.

E como você chama a função/procedimento no banco de dados? Você é vulnerável lá também, não é?