¿En qué situaciones la parametrización de una consulta NO impide la inyección SQL?

4

Aunque esto no es muy común, sé que la Inyección SQL todavía es posible con una consulta parametrizada, si está llamando a un procedimiento almacenado que usa un parámetro para construir y ejecutar SQL dinámico.

Tengo curiosidad por ver si hay otros escenarios de casos perimetrales en los que la Inyección de SQL aún sea posible, incluso si está utilizando consultas parametrizadas. ¿Es el SQL dinámico la única captura?

    
pregunta Abe Miessler 19.11.2014 - 22:26
fuente

2 respuestas

6

El único que viene inmediatamente a la mente es la inyección de segundo orden, donde un valor como 123' or 1=1 -- se almacena en una tabla que luego se recupera y luego se usa sin filtrar en una consulta. Por lo general, requiere que el código no parametrice los datos recuperados de la base de datos, lo que no es tan raro ya que los desarrolladores a menudo consideran que esta es una fuente "confiable".

    
respondido por el wireghoul 19.11.2014 - 22:35
fuente
-1

El uso de declaraciones preparadas con parámetros solo garantiza que los parámetros dados se transfieran de forma segura al DBMS como se esperaba. Esa declaración preparada definitivamente no será inyectable.

Sin embargo, cuando la declaración preparada utiliza funcionalidades como procedimientos almacenados que contienen fallas de inyección, es obvio que sigue siendo vulnerable. Pero no es la declaración preparada la que es vulnerable sino el procedimiento almacenado (que probablemente también podría usar declaraciones preparadas como mitigación).

    
respondido por el Gumbo 20.11.2014 - 08:37
fuente

Lea otras preguntas en las etiquetas