3


0

私はSilverlightアプリケーションを作成しています。これは、WCF Webサービスを介してサーバーサイドのデータベースへのデータの読み取りと書き込みの両方を行います。

これらのWebサービスを保護するための最善の方法は何ですか?

私の目標は、そのサービスが他のアプリケーションから呼び出されたり、データベースにアイテムを追加するリクエストでスパムされたりしないようにすることです。 Silverlightアプリケーションだけがそれらにアクセスできる必要があります。

2 Answer


8


クライアントがSilverlightアプリケーションであることを確認するための絶対確実な方法はありません*と、Donは絶対に正しいです。

しかし、私はあなたが以下についてもっと質問していると思います:私は私が信頼する人々だけがサービスに接続することを確かめることができます。 ここでの答えは(基本的に)「はい」です。少なくともこれを標準化した方法はあります。

通常は、いくつかの異なるアプローチを検討したいと思うでしょう。

  • トランスポートレベルのセキュリティ 誰かがトラフィックを改ざんしましたか? これにはSSLを使用します。

  • 認証 私は信頼している人と話していますか? ここでは、通常は認証メカニズムの1つ(Forms Authなど)を使用します。 フォーム認証を使用すると、Silverlight(実際にはSilverlightが存在するページ)とWCFサービスの両方を保護できます。 紛らわしいことに、SSLを認証に使用することができます(それが厄介なことであることはめったにありませんが)。


4


一般に、あなたはクライアントについて何も仮定することはできません。 Silverlight以外のアプリが自分のサイトにアクセスしないようにしようとすると、悪意のあるクライアントが簡単にSilverlightアプリのふりをする可能性があります。

つまり、これはサーバーを保護するための効果的な方法ではありません。 サーバーを保護するために、すべてのクライアントがサイトにアクセスし、そこから開始すると想定します。

編集する

相互認証の世界に入り込みたいのであれば、証明書を管理し、すべてのユーザーにユーザー証明書を発行するためのPKIを設定すれば、そのユーザーが誰であるかがわかります。 それでも、そのうちの1人が悪意のある(そして才能があり)他のクライアントに証明書を注入する可能性があります。