Usando la biblioteca Dynamic LINQ (link), ¿es vulnerable a la inyección? y (de ser así) ¿cómo puede protegerse esto?¿Es posible la inyección a través de Dynamic LINQ?
Algunos antecedentes de Security Considerations (Entity Framework):
LINQ a Entidades ataques de inyección:
Aunque composición consulta es posible en LINQ a Entidades, se realiza a través de la API de 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.
Dado que el SQL dinámico se compone de cadenas, ¿eso significa que podría ser susceptible a los vectores de inyección? ¿O LINQ to SQL automáticamente se encargará de parametrizar sus valores basados en el tipo de datos subyacente dentro de la biblioteca Dynamic LINQ?
¿O es completamente seguro ya que la consulta dinámica se realizará en la memoria en lugar de hacerlo en el SQL (anulando así los beneficios de los índices SQL)?
He estado trabajando entendiendo el código DynamicLibrary.cs
, pero estoy seguro de que podría pasar fácilmente por alto algo.
Como esta pregunta es acerca de la Biblioteca LINQ dinámica en sí misma, se puede considerar que esta pregunta se aplica tanto a linq-to-sql
como a linq-to-entities
(a pesar de la referencia anterior a Entity Framework).
Buen punto. El marco no puede protegerte de ti mismo. –
Por lo tanto, la inyección que provoca la fuga de datos aún es posible, pero aún está aislado de un incidente de "tablas vacías" (descartar/modificar datos/eliminar datos); ¿Es posible provocar una cláusula select y where para alterar los registros en una base de datos? – Seph
@Seph - no, no es posible alterar los registros ya que las consultas linq nunca se traducirán para actualizar, insertar o descartar SQL. El único ataque posible puede ser obtener acceso a datos no autorizados modificando los filtros "dónde". – Krizz