Oracle
 sql >> Datenbank >  >> RDS >> Oracle

SQL-Injection-Verhinderung mit dynamischer SQL ALTER USER-Abfrage

Sie sollten nicht versuchen, SQL-Injection nur auf Datenbankebene zu verhindern. Wenn sie dort angekommen sind, haben sie dich meistens schon erwischt. Sie sollten Parameter verwenden, Eingaben maskieren und fehlerhafte Zeichen bereits in der darüber liegenden Ebene entfernen. Tools (Frameworks?) wie Entity Framework entfernen automatisch gefährliche Zeichen.

Verwenden von DBMS_ASSERT.ENQUOTE_NAME macht sich hier sehr gut, aber ich würde empfehlen, dies auch in den Schichten darüber zu tun.

Allgemeine Regel (die Sie hier befolgen):Verwenden Sie etablierte und bewährte Sicherheitsmechanismen, erfinden Sie sie nicht neu!

Außerdem eine Anweisung wie

select * from users where username = 'IAm"WayUp';

ist absolut legal und ungefährlich.

Und wie rufen Sie die Funktion/Prozedur in der DB auf? Du bist dort auch verwundbar, nicht wahr?.