2010-02-03 20 views
10

He visto un par de artículos conflictivos sobre si L2E es susceptible o no a la inyección de SQL.LINQ to Entities and SQL Injection

De MSDN:

Aunque composición consulta es posible en LINQ to Entities, que se lleva a cabo a través de la API modelo de objetos. A diferencia de las consultas de Entity SQL, Las consultas de LINQ to Entities no se componen mediante la manipulación de cadenas ni la concatenación, y no son susceptibles a los ataques de inyección SQL tradicionales.

¿Eso implica que hay ataques "no tradicionales" que pueden funcionar? This article tiene un ejemplo de consulta no parametrizada: ¿es seguro asumir que si transfiere datos suministrados por el usuario a través de una variable, se parametrizará?

Si hago:

from foo in ctx.Bar where foo.Field = userSuppliedString select foo; 

estoy yo seguro?

Respuesta

9

En su ejemplo, está utilizando una variable (userSuppliedString), por lo que se parametrizará.

Si tenían un valor literal en su código:

from foo in ctx.Bar where foo.Field == "Hi" select foo; 

... entonces EF 1 no va a parametrizar, pero también hay cero peligro de inyección de SQL, ya que es un literal.

3

Buena suerte tratando de que alguien te diga que un determinado código no tiene una cierta vulnerabilidad de seguridad. Dicho esto, personalmente no me preocuparían los ataques de inyección de SQL a través de un vector de consulta LINQ (a menos que estuviera haciendo algo muy extraño detrás de escena).

Cuestiones relacionadas