4

一見したところ、OData は「オープンな」データベースにしかアピールできず、セキュリティが必要な環境、特に金融機関や政府機関のクライアントでは使用されないように思えます。

これは、現在のバージョンの OData/WCF で使用する正しいパースペクティブですか? そうでない場合は、その視点を変えるために必要なものを共有できますか?

アップデート

現在の懸念事項の例は次のとおりです。

  • SQL インジェクションの可能性が高まる
  • 追加のデータ検証 (ビジネス ロジックの複雑化)
  • データへの不正アクセス
  • データの「生のダンプ」を行う能力の向上
    • つまり、OData を使用して HR データを取得する方が簡単で、従来の ASP.net ページをスクリーン スクレイピングする方が簡単です。

更新 2

ビジネスルールを強制することも可能ですか? たとえば、適切にフォーマットされた SSN、電話、または Zip などです。すべてのフィールドが入力されていることを確認するのはどうですか?

4

3 に答える 3

7

oData は、オープン API を通じて構造化データを公開する方法にすぎません。特定の形式のセキュリティ必要ありません。完全にオープンなデータセット (ウィキ データベースのような) や、誰でも読めるが私的な書き込みが可能なデータセット (国会議員による投票のデータベースなど、誰でも読めるが更新できるのは自分だけ) を持つことができます。また、より複雑なセキュリティ構造 (顧客が自分の履歴のみを照会できるビデオ レンタル ストアなど) もサポートしています。

あなたの特定の懸念について:

  • ADO.NET Data Services を oData サーバーとして使用している場合、SQL インジェクションは不可能です。IQueryable受信した oData リクエストは解析され、すべての値を適切にエスケープする に渡されます。
  • ビジネス層/データ層の検証は同じままです。oData は、データ レイヤー (またはデータベースのように見える場合はビジネス レイヤー) 用の API を提供するだけです。
  • 許可しない限り、データへの不正アクセスは不可能です。ADO.NET Data Services のデフォルトでは、すべてのアクセス (読み取り専用アクセスであっても) を許可しないため、すべてのアクセスを明示的に承認する必要があります。
  • 「ロー ダンプ」シナリオこそが、 oData が非常に便利な理由です。これは、壊れやすい画面スクレイピング「ソリューション」に依存する代わりに、Web を介してデータ ソースの効率的なクエリを実行できるプロトコルです。誰かに情報を知られたくない場合は、公開しないでください。

現在 (私の知る限り)、ADO.NET Data Services は利用可能な唯一の oData プロバイダーであり、既定で安全です。デフォルトで安全でない、または SQL インジェクションを許可する oData プロバイダーを他の誰かが作成できると思いますが、それは愚かなことです。

また、oData は認証の概念とは完全に切り離されていることに注意してください。API にとって意味のある認証を使用するかどうかは、ユーザー次第です。oData がさまざまな形式の認証でどのように機能するかを説明する、WCF チームからの素晴らしい最近の一連のブログ投稿があります。

于 2010-08-17T16:06:20.450 に答える
3

OData を使用するビジネス ケースは何ですか? OData は主に、プラットフォームに依存しない方法でデータを公開するために存在します....NET、Java、Php、Python、REST などのクライアントがすべてデータにアクセスできるようにします。それはあなたのユースケースですか?

または、サービス レイヤー (SOA アプローチの一種) を介してデータを公開しようとしている場合、クライアント (制御対象) がデータ ソースからより適切に分離されます。その場合、OData は適切なソリューションではない可能性があります。OData をデータ サービス レイヤーの一部として見て、遅すぎると判断しました。私は現在、Entity Frameworkモデルへのサービスベースのアクセスを(BOSサービスを介して)実装するDevforceを見ています...サービスホストモデルへのLINQを含む完全なCRUD操作。

セキュリティは、OData を表示するか、DevForce を介して希望するレベルにすることができます。適切なデータ リモーティング ソリューションを選択してから、適切なセキュリティ実装を調査してください。

于 2010-10-25T17:02:49.530 に答える
1

確かに、政府のソリューションで使用できます。OData はデータにアクセスするための手段にすぎず、情報を保護することとは関係ありません。アプリケーション レベル (アプリケーションにログインとパスワードを提供する) ではなく、トランスポート レベル (SSL) でセキュリティを実装する必要があります。

これには多くの方法があります。一例として、SSL を使用している場合、クライアントにクライアント証明書を提供させ、認証を行わせることができます。その人物が認証されると、アプリケーションを使用して、その人物が見ることができるものを制限できます (おそらく、その人物はクライアント情報しか見ることができないため、すべてのクエリでその人物が見えるものに自動的に制限されます)。

于 2010-08-17T14:26:21.420 に答える