IIS6 でホストされている WCF サービスがあり、.net フレームワーク 3.5 を使用しています。私が持っているサイトはパブリック ドメインです。つまり、誰でもどこからでもアクセスできます。
私の質問は、WCF サービスを非表示にする方法はありますか? ページのソースを簡単に表示したり、ページの背後にあるサービスのパスを正確に把握したりできます...
http://hostname.MyServiceName.svc?wsdl
、どうすれば非表示にできますか?
IIS6 でホストされている WCF サービスがあり、.net フレームワーク 3.5 を使用しています。私が持っているサイトはパブリック ドメインです。つまり、誰でもどこからでもアクセスできます。
私の質問は、WCF サービスを非表示にする方法はありますか? ページのソースを簡単に表示したり、ページの背後にあるサービスのパスを正確に把握したりできます...
http://hostname.MyServiceName.svc?wsdl
、どうすれば非表示にできますか?
サービスを「覆い隠す」だけでは解決策の半分にも満たないという David の意見に同意し、もちろんオフにすることもできます。
タグがタグを含む を<service>
参照していないことを確認してください。<serviceBehavior>
<serviceMetadata>
これにより、サービス メタデータ (WSDL over HTTP を含む)が公開されます。
<behaviors>
<serviceBehaviors>
<behavior name="default">
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
<behaviors>
<services>
<service name="IYourService" behaviorConfiguration="default">
...
</service>
</services>
これにより、サービス メタデータが公開されることはありません<serviceMetadata>
(タグの削除に注意してください)。
<behaviors>
<serviceBehaviors>
<behavior name="nometadata">
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
<behaviors>
<services>
<service name="IYourService" behaviorConfiguration="nometadata">
...
</service>
</services>
サービス メタデータを削除すると、Add Service Reference
Visual Studio (または他の開発システムの場合はそれに相当するもの) 内から行うことができなくなります。サービスは、何が利用可能かを教えてくれません。いくつか知っておく必要があります。他の方法。
これは、古い「あいまいさによるセキュリティ」の議論に戻ります。サービスを非表示にすることは、サービスを保護するための良い方法でも効果的な方法でもありません。単に「隠蔽」しようとするのではなく、SSL と実際の認証方法の使用を検討してください。
また、あなたの質問にもっと直接的に答えるために: ブラウザーがあなたのサービス アドレスを知っている場合 (そして、あなたのページが JavaScript を介してそれを呼び出すために必要な場合)、誰にとっても簡単に見つけることができます。ページ ソースで URL を隠そうとしても、Fiddler または Firebug で HTTP トランザクションを監視して、サービス アドレスと要求の形式/内容の両方を確認するのは簡単なことです。
なぜあなたのサービスを隠したいのですか?誰かがそれを本当の問題だと思っているのですか、それとも自分を守ろうとしているだけですか?
自分自身を守るための戦略はたくさんあります...しかし、それが単なる「自分のサービスを他の人に使われたくない」という単純なものである場合は、時々 API を変更してください。ランダムに変化する API のように「やめて」と言うものはありません。