Du bør ikke forsøge kun at forhindre SQL-injektion på databaseniveau. Når de først kom dertil, har de for det meste allerede fået dig. Du bør bruge parametre, maske input og fjerne dårlige tegn allerede i laget ovenfor. Værktøjer (Frameworks?) som Entity Framework fjerner automatisk farlige tegn.
Bruger DBMS_ASSERT.ENQUOTE_NAME
klarer sig meget godt her, men jeg vil anbefale at gøre dette også i lagene ovenfor.
Generel regel (som du følger her):Brug sikkerhedsmekanismer, der er etableret og bevist, lad være med at genopfinde dem!
Desuden en udtalelse som
select * from users where username = 'IAm"WayUp';
er absolut lovligt og ikke farligt.
Og hvordan kalder man funktionen/proceduren i DB'en? Du er også sårbar der, er du ikke?