2012-12-01 9 views
6

Supponiamo di disporre di un DB completo di record di integrità e un'applicazione ASP.NET MVC. Supponiamo che qualcuno usi l'URL "/ api/medicalRecords? $ Filter = id gt 0" per chiamare una richiesta Ajax. Questo mi sembra che sia aperto per l'iniezione SQL - proprio come 10-15 anni fa ...Problema ODATA per l'iniezione SQL

Ciò significa che è standard aperto all'iniezione SQL, o dipende dal lato server (io uso Risultato IQueryable ed entità framework 4)?

so che il meccanismo di autenticazione è necessario - ma per il bene di questa domanda, supponiamo nessun meccanismo di autenticazione è disponibile ...

risposta

6

provate a leggere questo post del blog, che fornisce informazioni dettagliate su molto OData e SQL Injection:

http://kscottmorrison.com/tag/sql-injection/

... OData, naturalmente, è la connessione origine dati, in modo da ISN iniezione 't un problema -basta prendere una sospensione di esso in primo luogo è sufficiente. Così che cosa è di fondamentale importanza con OData è quello di gestire rigorosamente ciò che questa connessione è capace di fare ...

+0

Esattamente quello che stavo cercando ... e Google non ha aiutato molto :-). Ora capisco che tutto dipende da come gestisco la connessione e esporre i dati agli utenti dell'applicazione. – lionheart

3

WCF Data Services parametrizzare i valori dal vostro filtro che elimina la possibilità per l'iniezione SQL .

Si consiglia di visualizzare le query SQL effettive eseguite in un profiler del database.

+0

Quindi, mi permetta di capire - che avrei dovuto usare WCF per chiamare il modello di dati Entity Framework? e cosa succede se utilizzo direttamente il modello di dati del framework Enitity? – lionheart

+0

Non è quello che stai già facendo? La tua domanda riguarda OData in .NET, che si presenta sotto forma di WCF Data Services. –

+0

No, è un'applicazione ASP.NET MVC e rimuovo l'utilizzo di WCF ... Anche se utilizzo WCF l'ID if nel campo dei criteri è maggiore di 0, è ancora valido per WCF ... – lionheart