¿Cómo usar ORM correctamente para evitar la inyección de SQL?

-1

Leí aquí que el uso de ORM (como nHibernate) no necesariamente impide la inyección de SQL; por ejemplo, si continúa creando consultas dinámicas utilizando su marco ORM, todavía es vulnerable.

Bien, ¿cuál es el uso correcto de ORM para evitar todos los tipos de inyección SQL? ¿Deberíamos utilizar consultas parametrizadas utilizando nuestro marco ORM? Hace algo como nHibernate escapa de caracteres especiales de SQL como comillas simples para que los desarrolladores no escriban un fragmento de código como este:

private string SafeSqlLiteral(string inputSQL) { return inputSQL.Replace("'", "''"); }

    
pregunta Goli E 27.01.2015 - 01:10
fuente

2 respuestas

2
  

Bien, entonces, ¿cuál es el uso correcto de ORM para evitar todos los tipos de SQL?   inyección?

No lo haces.

ORM no se creó para evitar la inyección SQL. Si desea evitar la inyección SQL: comprenda cómo funciona la inyección SQL y aplique este conocimiento al código que escribe. De esta manera, sabrá la forma correcta de prevenirlo (incluso en los casos que involucran el uso de SQL dinámico).

No he revisado el código fuente de NHibernate, así que no puedo decirte cómo intentan prevenir la inyección SQL (si realmente te importa, te sugiero que investigues un poco por tu cuenta). Si tuviera que apostar, diría que usan SQL parametrizado ya que este es el estándar de la industria para prevenir la inyección de SQL.

Para evitar la inyección SQL en SQL dinámico, debe usar consultas parametrizadas, específicamente sp_executesql .

    
respondido por el Abe Miessler 27.01.2015 - 06:30
fuente
0

No siempre impide la inyección de SQL, los ejemplos típicos incluyen la inyección de segundo orden en scripts o incluso procedimientos almacenados que utilizan datos de lectura de una tabla sin parametrizarlos o validar los datos.

    
respondido por el wireghoul 27.01.2015 - 03:04
fuente

Lea otras preguntas en las etiquetas