sql >> Base de Datos >  >> RDS >> Oracle

Prevención de inyección SQL con consulta dinámica SQL ALTER USER

No debe intentar evitar la inyección de SQL solo en el nivel de la base de datos. Una vez que llegaron allí, en su mayoría ya te atraparon. Debe usar parámetros, enmascarar la entrada y eliminar los caracteres malos que ya están en la capa superior. Las herramientas (¿Frameworks?) como Entity Framework eliminan automáticamente los caracteres peligrosos.

Usando DBMS_ASSERT.ENQUOTE_NAME lo está haciendo muy bien aquí, pero recomendaría hacer esto también en las capas de arriba.

Regla general (que sigues aquí):Utiliza mecanismos de seguridad establecidos y probados, ¡no los reinventes!

Además, una declaración como

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

es absolutamente legal y no es peligroso.

¿Y cómo llamas a la función/procedimiento en la base de datos? Eres vulnerable ahí también, ¿no?.