Предназначена ли OData для использования в государственных и финансовых учреждениях?Какие меры безопасности мне нужны? - PullRequest
3 голосов
/ 17 августа 2010

На первый взгляд, OData, похоже, будет обращаться только к «открытым» базам данных и никогда не будет использоваться в средах, где требуется безопасность, особенно с финансовыми или государственными клиентами.

Это правильная перспективаиметь с текущей версией OData / WCF?Если нет, можете ли вы поделиться тем, что мне нужно, чтобы изменить эту перспективу?

Обновление

Примеры текущих проблем включают в себя:

  • Увеличениевозможность SQL-инъекции
  • Дополнительная проверка данных (усложняющая бизнес-логика)
  • Несанкционированный доступ к данным
  • Увеличена возможность создания «сырого дампа» данных
    • под этим я подразумеваю, что проще использовать OData для доступа к данным о людских ресурсах, чем просто отсканировать экран традиционной страницы ASP.net

Обновление 2

Могу ли я также обеспечить соблюдение бизнес-правил?Например, правильно отформатированный номер SSN, телефон или почтовый индекс.Как насчет того, чтобы все поля были заполнены?

Ответы [ 3 ]

6 голосов
/ 17 августа 2010

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 работает с различными формами аутентификации.

3 голосов
/ 25 октября 2010

Каково ваше экономическое обоснование для использования OData?OData в первую очередь существует для того, чтобы предоставлять ваши данные независимым от платформы образом, чтобы клиенты .NET, Java, Php, Python, REST и т. Д. Могли получить доступ к вашим данным.Это ваш вариант использования?

Или вы пытаетесь предоставить свои данные через сервисный уровень (своего рода подход SOA), чтобы ваши клиенты (которыми вы управляете) были лучше отделены от ваших источников данных.В этом случае OData не может быть правильным решением.Я рассмотрел OData как часть уровня обслуживания данных и решил, что он слишком медленный.Сейчас я смотрю на Devforce , который реализует доступ на основе служб для моделей Entity Framework (через их службу BOS) ... полные операции CRUD, включая LINQ для модели с размещением в службах.Для вас желаемый уровень возможен либо через OData, либо через DevForce.Выберите правильное решение для удаленного обмена данными, а затем изучите правильную реализацию безопасности.

1 голос
/ 17 августа 2010

Конечно, вы можете использовать его в правительственном решении.OData - это просто способ доступа к данным, он не имеет ничего общего с обеспечением безопасности информации.Вы должны реализовать безопасность на транспортном уровне (SSL), а не на уровне приложения (укажите логин и пароль для приложения).

Есть много способов сделать это.Одним из примеров является то, что если вы используете SSL, вы можете заставить своего клиента предоставить клиентский сертификат и выполнить проверку подлинности.После того, как человек прошел аутентификацию, вы можете использовать свое приложение, чтобы ограничить то, что он может видеть (возможно, он может видеть только информацию о своем клиенте, поэтому все запросы автоматически ограничивают просмотр этого лица).

...