oData - это просто способ предоставления структурированных данных через открытый API. не требует какой-либо конкретной формы безопасности;можно иметь полностью открытые наборы данных (например, базу данных вики) или доступную для чтения, но частную запись (например, базу данных голосов членов Конгресса, так что любой может прочитать ее, но только вы можете обновить ее).Он также поддерживает более сложные структуры безопасности (например, магазин проката видео, позволяющий клиентам запрашивать только свою собственную историю).
Что касается ваших конкретных проблем:
- Внедрение SQL просто невозможноесли вы используете службы данных ADO.NET в качестве сервера oData.Входящий запрос oData анализируется и затем передается в
IQueryable
, который должным образом экранирует все значения. - Проверка бизнес-уровня / уровня данных остается прежней.oData просто предоставляет API для уровня данных (или бизнес-уровня, если он выглядит как база данных).
- Несанкционированный доступ к данным невозможен без вашего разрешения.По умолчанию службы данных ADO.NET не разрешают любой доступ (даже доступ только для чтения), поэтому вы вынуждены явно разрешить любой доступ.
- Сценарий «raw dump»точно почему oData так полезна!Это протокол, который позволяет эффективно запрашивать источники данных через Интернет, а не зависеть от хрупких "решений" для скрининга экрана.Если вы не хотите, чтобы кто-то получал информацию, не публикуйте ее.
Прямо сейчас (насколько мне известно) ADO.NET Data Services - единственный доступный поставщик oData, и он безопасен.по умолчанию.Я полагаю, что кто-то другой мог бы написать провайдера oData, который по умолчанию не был безопасным или допускал внедрение SQL, но это было бы глупо.
Кроме того, помните, что oData полностью отделена от концепции аутентификации.Вы можете использовать любую аутентификацию, которая имеет смысл для вашего API.* * * * * * * * замечательная серия постов в блоге от команды WCF, посвященная тому, как oData работает с различными формами аутентификации.