1

私たちのアーキテクチャは単純な N 層モデルであり、IIS7 (DiscountASP でホストされている) にある ASP.Net アプリケーションで構成され、WCF サービスでメソッドを公開します。これらのメソッドは、EF4 を使用して DB と通信します。クライアントは Silverlight 4.0 です。

3 つの重要なポイント:

  • 認証と承認は問題ではありません。サービスへの呼び出しは匿名であり、呼び出し元の身元は気にしません。

  • メソッド呼び出しで転送されるデータは、機密ではありません

  • 誰にも電話をかけられないようにしたいだけです。

間違っている場合は訂正してください。Silverlight
ではサポートされていないため、メッセージ セキュリティはオプションではありません。
トランスポート セキュリティ (HTTPS および x.509/SSL 証明書) も Silverlight では実行できません

したがって、一定レベルのセキュリティを強化するための手順は次のとおりです。

  • 秘密鍵は、XAP の dll の 1 つにハードコードされています。

  • この dll はスクランブルされているため、再設計することはできません。

  • 秘密鍵は、すべてのサービス メソッド呼び出しにパラメーターとして送信されます。

  • 各メソッドの開始時に、秘密鍵を DB にある元の鍵と照合します。

  • サービスから MetaDataExchange エンドポイントを削除します。

この最小限のセットアップと多くの欠陥を考慮すると、おそらく最大の欠陥は、転送が保護されておらず (HTTP)、秘密鍵が公開されていることです。質問は次のとおりです。

悪意のあるユーザーが私たちのシステムに危害を加えたい場合、秘密鍵を抽出し、公開されているメソッドを見つけてそれらを呼び出し始めるために、どれだけの努力が必要でしょうか?

各呼び出しで資格情報の基本的な保護を提供できる他の WCFcombiantion はありますか (HTTPS または証明書なし)?

4

1 に答える 1

0

いいえ、以前の質問との契約において、セキュリティとは何を意味するのかがより明確になります。セキュリティはいくつかの側面で構成されています。

  • 認証と承認は問題ではありません。サービスへの呼び出しは匿名であり、呼び出し元の身元は気にしません。

  • 誰にも電話をかけられないようにしたいだけです。

それは矛盾です。認証を探しているすべての人が呼び出しを行うことができないようにしたい場合。

  • メソッド呼び出しで転送されるデータは機密ではありません。

この最小限のセットアップと多くの欠陥を考慮すると、おそらく最大の欠陥は、転送が保護されておらず (HTTP)、秘密鍵が公開されていることです。

別の矛盾 - 機密データを送信したいのは明らかです。

メッセージ セキュリティは Silverlight のオプションではありません - メッセージの暗号化と署名について話している場合はそうですが、安全なチャネルを提供するために HTTPS を使用する場合は、メッセージでユーザー名とパスワードを渡すことができます =TransportWithMessageCredential

秘密鍵を見つけるのにどれくらいの労力が必要ですか?

  • HTTPS を使用しない場合は、基本的なスキルとネットワーク トラフィックへのアクセスを持つすべての人が見つかります。
  • キーをアセンブリに配置する場合、おそらくより多くのスキルが必要になりますが、それでもキーは存在します (難読化によりロジックのリバース エンジニアリングが難しくなりますが、定数は同じでなければなりません)。

送信を保護し、安全なソリューションを構築する場合は、HTTPS を使用する必要があります。HTTPS 経由で公開されたサービスは、Silverlight で使用できます。ユーザー名とパスワードを使用してクライアントを識別することもできます。クライアントは、ユーザー名とパスワードを秘密にしておく責任があります。そうしないと、誰のアカウントがアプリケーションに損害を与えたかがわかります。

于 2011-08-15T13:41:28.177 に答える