Probeer SQL-injectie niet alleen op databaseniveau te voorkomen. Als ze daar eenmaal zijn, hebben ze je meestal al. U moet parameters gebruiken, invoer maskeren en slechte tekens verwijderen die zich al in de bovenstaande laag bevinden. Tools (Frameworks?) zoals Entity Framework verwijderen automatisch gevaarlijke tekens.
DBMS_ASSERT.ENQUOTE_NAME
gebruiken doet het hier heel goed, maar ik raad aan om dit ook te doen in de bovenstaande lagen.
Algemene regel (die u hier volgt):Gebruik gevestigde en bewezen beveiligingsmechanismen, vind ze niet opnieuw uit!
Bovendien kan een uitspraak als
select * from users where username = 'IAm"WayUp';
is absoluut legaal en niet gevaarlijk.
En hoe noem je de functie/procedure in de DB? Je bent daar ook kwetsbaar, nietwaar?