2012-12-01 14 views
6

Załóżmy, że mam DB pełne rekordy zdrowia i aplikacji ASP.NET MVC. Załóżmy, że ktoś używa adresu URL "/ api/medicalRecords? $ Filter = id gt 0", aby wywołać żądanie Ajax. Wydaje mi się, że jest otwarty na iniekcję SQL - tak jak 10-15 lat temu ...Obawy OData dotyczące wstrzykiwania SQL

Czy to oznacza, że ​​jest on standardowo otwarty na iniekcję SQL, czy też zależy od strony serwera (ja używam IQueryable result and entity framework 4)?

wiem, że mechanizm uwierzytelniania jest konieczne - ale ze względu na to pytanie, załóżmy, że żaden mechanizm uwierzytelniania jest dostępny ...

Odpowiedz

6

Spróbuj przeczytać na blogu, który zapewnia bardzo szczegółowe informacje o OData i SQL Injection:

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

... OData, oczywiście, jest połączenie ze źródłem danych, więc ISN wtryskowej Problem z tym, że wystarczy go najpierw trzymać. Więc co jest niezwykle ważne z OData jest ściśle zarządzać co to połączenie jest zdolny ...

+0

Dokładnie to, czego szukałem ... a Google nie pomogło :-). Teraz rozumiem, że wszystko zależy od tego, jak zarządzam połączeniem i udostępniam dane użytkownikom aplikacji. – lionheart

3

WCF Data Services będzie parametryzacji wartości z filtra, który eliminuje możliwość dla SQL injection .

Polecam przeglądanie faktycznych kwerend SQL wykonanych w profiler bazy danych.

+0

Więc, pozwól mi zrozumieć - Musiałbym użyć WCF do wywoływania modelu danych Entity Framework? i co się stanie, jeśli użyję modelu danych ramowych Enitity bezpośrednio? – lionheart

+0

Czy to nie jest to, co już robisz? Twoje pytanie dotyczy OData w .NET, które ma postać usług WCF Data Services. –

+0

Nie, jest to aplikacja ASP.NET MVC, a ja usuwam korzystanie z WCF ... Chociaż, nawet jeśli używam WCF, jeśli identyfikator w polu kryteriów jest większy niż 0, to nadal jest legalne dla WCF ... – lionheart

Powiązane problemy