Veo código de desarrolladores que usan conversión de fecha implícita. Me gustaría una respuesta definitiva a por qué no deberían hacer esto.
SELECT * from dba_objects WHERE Created >= '06-MAR-2012';
oracle
sql-injection
Leigh Riffel
fuente
fuente
Respuestas:
Porque
'2012/12/1'
en los Estados Unidos es 11 meses después de la misma fecha de cadena en Europa.Permitir conversiones implícitas significa que está a merced de la configuración de ubicación.
Si puede nombrar un negocio donde 11 meses es un margen de error aceptable, me impresionará.
fuente
Hay problemas que ocurrirán si una sesión con un formato de fecha diferente ejecuta el código.
Fracaso de la declaración
Datos incorrectos
En esta situación, porque cada una de las declaraciones de alteración / inserción podría ser realizada por diferentes usuarios. Todos estarían ejecutando las mismas declaraciones, pero las fechas resultantes serían completamente diferentes. Las instrucciones de inserción pueden estar enterradas en un paquete que solo se llama indirectamente. Debido a que no se devolvió ningún error, el problema podría no encontrarse hasta mucho más tarde.
Inyección SQL
En esta situación, un individuo malintencionado podría alterar el formato de la fecha de las sesiones de tal manera que les dé acceso a datos a los que normalmente no tendrían acceso.
fuente