Vejo o código dos desenvolvedores usando a conversão implícita de datas. Eu gostaria de uma resposta definitiva para por que eles não deveriam fazer isso.
SELECT * from dba_objects WHERE Created >= '06-MAR-2012';
oracle
sql-injection
Leigh Riffel
fonte
fonte
Respostas:
Porque
'2012/12/1'
nos EUA 11 meses após a mesma data na Europa.Permitir conversões implícitas significa que você está à mercê das configurações de localização.
Se você pode nomear uma empresa em que 11 meses é uma margem de erro aceitável, ficarei impressionado.
fonte
Existem problemas que ocorrerão se uma sessão com um formato de data diferente executar o código.
Falha na instrução
Dados inválidos
Nesta situação, porque cada uma das instruções alter / insert pode ser feita por diferentes usuários. Todos eles executariam as mesmas instruções, mas as datas resultantes seriam completamente diferentes. As instruções de inserção podem estar ocultas em um pacote que está sendo chamado apenas indiretamente. Como nenhum erro foi retornado, o problema pode não ser encontrado até muito mais tarde.
Injeção SQL
Nessa situação, um indivíduo mal-intencionado pode alterar o formato da data das sessões de forma a fornecer acesso a dados aos quais normalmente não teriam acesso.
fonte