it-swarm-es.com

¿Los procedimientos almacenados evitan la inyección de SQL en PostgreSQL?

¿Es cierto que los procedimientos almacenados evitarán la inyección de bases de datos? Investigué un poco y descubrí que SQL-Server, Oracle y MySQL no son seguros contra las inyecciones de SQL si solo utilizamos procedimientos almacenados. Sin embargo, este problema no existe en PostgreSQL. ¿La implementación del procedimiento almacenado en el núcleo de PostgreSQL impide la inyección de SQL o existen otras razones/diferencias? ¿Puedo usar la inyección SQL en PostgreSQL si solo usamos el procedimiento almacenado?

19
Am1rr3zA

En resumen: no, los procedimientos almacenados no impiden la inyección de SQL. Depende de cómo maneje el SQL dinámico dentro del procedimiento almacenado.

Para obtener una respuesta más completa, verifique lo que se publica aquí: https://stackoverflow.com/questions/627918/am-i-safe-against-sql-injection

11
anonymous

Verifique estos enlaces y la imagen se aclarará:

http://anubhavg.wordpress.com/2008/02/01/are-stored-procedures-safe-against-sql-injection/

http://www.sqlmag.com/article/sql-server/protecting-against-sql-injection.aspx

"... Medidas para evitar la inyección SQL

  1. Valide todas las entradas provenientes del usuario en el servidor.
  2. Evite el uso de consultas SQL dinámicas si hay un método alternativo disponible.
  3. Utilice el procedimiento almacenado parametrizado con parámetros incrustados.
  4. Ejecute procedimientos almacenados utilizando una interfaz segura, como declaraciones invocables en JDBC o CommandObject en ADO.
  5. Use una cuenta con pocos privilegios para ejecutar la base de datos.
  6. Otorgue los roles y privilegios adecuados al procedimiento almacenado que se utiliza en las aplicaciones ".
6
Phoenician-Eagle

SI usted usa SP correctamente, entonces usted es más o menos a salvo de la inyección de SQL (suponiendo que de todas formas sigas haciendo la validación de entrada adecuada, por supuesto). IF .

Ah, pero ¿qué significa usar correctamente SP correctamente?

Dos de los usos erróneos más comunes de SP que veo con frecuencia, y cada uno puede conducir a la inyección SQL incluso con procedimientos almacenados , son:

  • SQL dinámico dentro del SP.
  • Llamar al código SP desde el código como ejecutaría una cadena concatenada. Es decir, enviar a la base de datos "exec spname ( param1) ", en lugar de usar objetos de comando/parámetro (o parametrizar la consulta, según el idioma). SQLi aún puede inyectarse en la SP llamada ...
5
AviD

Necesita un enlace variable junto con parámetros con nombre, independientemente de si la consulta es un procedimiento almacenado o no. También debe preocuparse por ciertas instrucciones SQL como: LIKE

4
atdre