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?
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?
Igual que cualquier otra base de datos que use SQL, use lo siguiente (tomado de hoja de referencia de OWASP)
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.
Lea otras preguntas en las etiquetas sql-injection postgresql