Protección de Postgres contra inyección de SQL

2

Postgres permite la ejecución dinámica de código, lo que podría dejarlo vulnerable a la inyección de SQL.

¿Qué medidas de protección tiene contra esto?

    
pregunta LINUX G33NYUS 06.03.2017 - 23:26
fuente

2 respuestas

4

Igual que cualquier otra base de datos que use SQL, use lo siguiente (tomado de hoja de referencia de OWASP)

  • Opción # 1: Uso de declaraciones preparadas (consultas parametrizadas)
  • Opción # 2: Uso de procedimientos almacenados
  • Opción # 3: Escapar de todas las entradas proporcionadas por el usuario
  • También imponer: privilegio mínimo
  • También realice: Validación de entrada de la lista blanca
respondido por el Rory Alsop 07.03.2017 - 14:14
fuente
2

La inyección SQL es una amenaza de aplicación, no una amenaza de base de datos. Al final, todas las bases de datos relacionales ejecutan el SQL que se les pasa como una cadena. Y es responsabilidad del desarrollador de la aplicación asegurarse de que la cadena SQL no sea dañina.

La inyección SQL es una forma de hacer que una aplicación envíe cadenas SQL a la base de datos que son dañinas, y hacerlo de una manera que puede no ser evidente en la primera vista al desarrollador de la aplicación. P.ej. si la aplicación contiene código como

string sql_stmt = "select a from t where k = '" + textfield.text + "'"

donde textfield.text sería un texto ingresado por el usuario en la aplicación, y usted envía sql a la base de datos, luego un usuario inteligente podría ingresar

';drop table t; --

en el campo de texto, lo que daría como resultado la cadena

select a from t where k = '';drop table t; --'

se envía a la base de datos y se eliminará la tabla t .

Pero esto es un error del desarrollador de la aplicación, no de la base de datos. La base de datos simplemente ejecuta cualquier sql que se le envíe. Y al final tiene que tener la posibilidad de eliminar tablas.

Como ya lo dijo @RoryAlsop en su respuesta, Postgres, como muchas otras bases de datos, ofrece apoyo a los desarrolladores de aplicaciones para facilitar el desarrollo de código seguro (permisos, declaraciones preparadas, etc.), pero al final es responsabilidad de el desarrollador de la aplicación debe usar estos u otros métodos para proteger la aplicación contra la inyección de SQL, ya que es allí donde puede ocurrir. Las bases de datos no son el nivel en el que se trata de una amenaza, son solo donde se produce el efecto de la falla.

    
respondido por el FrankPl 10.03.2017 - 20:00
fuente

Lea otras preguntas en las etiquetas