Utilizzando la libreria Dynamic LINQ (link), è vulnerabile all'iniezione? e (in caso affermativo) come può essere protetto contro?È possibile l'iniezione tramite Dynamic LINQ?
Alcuni sfondo da Security Considerations (Entity Framework):
LINQ alle entità attacchi di iniezione:
Sebbene composizione query è possibile in LINQ alle entità, è eseguita attraverso l'oggetto del modello API. A differenza delle query di Entity SQL, le query LINQ alle Entità non sono composte utilizzando la manipolazione delle stringhe o la concatenazione e non sono suscettibili agli attacchi di iniezione SQL tradizionali.
Poiché Dynamic SQL è composto da stringhe vuol dire che potrebbe essere suscettibile ai vettori di iniezione? O LINQ to SQL si occuperà automaticamente della parametrizzazione dei valori in base al tipo di dati sottostante all'interno della libreria Dynamic LINQ?
O è del tutto sicuro poiché la query dinamica verrà eseguita in memoria anziché contro SQL (annullando in tal modo eventuali vantaggi dagli indici SQL)?
Ho lavorato attraverso la comprensione del codice DynamicLibrary.cs
ma sono sicuro che potrei facilmente trascurare qualcosa.
Poiché questa domanda riguarda la libreria Dynamic LINQ, questa domanda può essere considerata valida sia per linq-to-sql
sia per linq-to-entities
(nonostante il riferimento sopra a Entity Framework).
Buon punto. La struttura non può proteggerti da te stesso. –
Quindi l'iniezione con conseguente perdita di dati è ancora possibile, ma si è ancora isolati da un incidente "bobby tables" (eliminazione/modifica dati/eliminazione dati); cioè puoi causare una clausola select e where per modificare i record in un database? – Seph
@Seph - no, non è possibile modificare i record poiché le query linq non verranno mai tradotte per aggiornare, inserire o rilasciare SQL. L'unico attacco possibile potrebbe essere ottenere un accesso a dati non autorizzati modificando i filtri "where". – Krizz