4

IIS6 でホストされている WCF サービスがあり、.net フレームワーク 3.5 を使用しています。私が持っているサイトはパブリック ドメインです。つまり、誰でもどこからでもアクセスできます。

私の質問は、WCF サービスを非表示にする方法はありますか? ページのソースを簡単に表示したり、ページの背後にあるサービスのパスを正確に把握したりできます...

http://hostname.MyServiceName.svc?wsdl、どうすれば非表示にできますか?

4

3 に答える 3

11

サービスを「覆い隠す」だけでは解決策の半分にも満たないという David の意見に同意し、もちろんオフにすることもできます。

  • サービス メタデータ
  • WSDL ファイルの http 可用性

タグがタグを含む を<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 ReferenceVisual Studio (または他の開発システムの場合はそれに相当するもの) 内から行うことができなくなります。サービスは、何が利用可能かを教えてくれません。いくつか知っておく必要があります。他の方法。

于 2010-12-05T20:28:57.253 に答える
5

これは、古い「あいまいさによるセキュリティ」の議論に戻ります。サービスを非表示にすることは、サービスを保護するための良い方法でも効果的な方法でもありません。単に「隠蔽」しようとするのではなく、SSL と実際の認証方法の使用を検討してください。

また、あなたの質問にもっと直接的に答えるために: ブラウザーがあなたのサービス アドレスを知っている場合 (そして、あなたのページが JavaScript を介してそれを呼び出すために必要な場合)、誰にとっても簡単に見つけることができます。ページ ソースで URL を隠そうとしても、Fiddler または Firebug で HTTP トランザクションを監視して、サービス アドレスと要求の形式/内容の両方を確認するのは簡単なことです。

于 2010-12-05T20:03:59.693 に答える
-1

なぜあなたのサービスを隠したいのですか?誰かがそれを本当の問題だと思っているのですか、それとも自分を守ろうとしているだけですか?

自分自身を守るための戦略はたくさんあります...しかし、それが単なる「自分のサービスを他の人に使われたくない」という単純なものである場合は、時々 API を変更してください。ランダムに変化する API のように「やめて」と言うものはありません。

于 2012-10-01T14:09:21.437 に答える