Je vois du code de développeurs utilisant une conversion de date implicite. Je voudrais une réponse définitive à la raison pour laquelle ils ne devraient pas faire cela.
SELECT * from dba_objects WHERE Created >= '06-MAR-2012';
oracle
sql-injection
Leigh Riffel
la source
la source
Réponses:
Parce que
'2012/12/1'
États-Unis, c'est 11 mois après la même date de chaîne en Europe.Autoriser les conversions implicites signifie que vous êtes à la merci des paramètres de localisation.
Si vous pouvez nommer une entreprise où 11 mois est une marge d'erreur acceptable, je serai impressionné.
la source
Des problèmes peuvent survenir si une session avec un format de date différent exécute le code.
Échec de la déclaration
Données incorrectes
Dans cette situation, car chacune des instructions alter / insert peut être effectuée par différents utilisateurs. Ils exécuteraient tous les mêmes déclarations, mais les dates résultantes seraient complètement différentes. Les instructions d'insertion peuvent être enfouies dans un package qui n'est appelé qu'indirectement. Puisqu'aucune erreur n'a été renvoyée, le problème peut ne pas être trouvé beaucoup plus tard.
Injection SQL
Dans cette situation, un individu malveillant pourrait modifier le format de date de ses sessions de manière à lui donner accès à des données auxquelles il n'aurait normalement pas accès.
la source