データベースレベルでのみSQLインジェクションを阻止しようとすべきではありません。彼らがそこに着くと、彼らはほとんどすでにあなたを手に入れました。パラメータを使用し、入力をマスクして、上のレイヤーにすでにある不正な文字を削除する必要があります。 Entity Frameworkなどのツール(Frameworks?)は、危険な文字を自動的に削除します。
DBMS_ASSERT.ENQUOTE_NAME
の使用 ここでは非常にうまくいっていますが、上のレイヤーでもこれを行うことをお勧めします。
一般的なルール(ここに従う):確立され、証明されているセキュリティメカニズムを使用し、それらを再発明しないでください!
さらに、
のようなステートメントselect * from users where username = 'IAm"WayUp';
絶対に合法で危険ではありません。
そして、DBで関数/プロシージャをどのように呼び出しますか?あなたもそこに脆弱ですよね?