Nic*_*ahn 4 wcf wcf-binding svc
我有一个在IIS6上托管的WCF服务,我正在使用.net framework 3.5.我拥有的网站是公共领域的,我的意思是任何人都可以从任何地方访问.
我的问题是,有没有办法隐藏我的WCF服务?我可以轻松查看源页面或确切知道页面后面的服务路径...
http://hostname.MyServiceName.svc?wsdl,我怎么能隐藏它?
mar*_*c_s 11
同意大卫只是"掩盖"你的服务不到解决方案的一半,你当然可以关闭
要做的是,确保您的<service>标记没有引用<serviceBehavior>包含<serviceMetadata>标记的标记.
所以这将公开服务元数据(包括HTTP上的WSDL):
<behaviors>
<serviceBehaviors>
<behavior name="default">
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
<behaviors>
<services>
<service name="IYourService" behaviorConfiguration="default">
...
</service>
</services>
Run Code Online (Sandbox Code Playgroud)
虽然这不会暴露任何服务元数据(观察删除<serviceMetadata>标签):
<behaviors>
<serviceBehaviors>
<behavior name="nometadata">
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
<behaviors>
<services>
<service name="IYourService" behaviorConfiguration="nometadata">
...
</service>
</services>
Run Code Online (Sandbox Code Playgroud)
删除任何服务元数据时,您将无法Add Service Reference在Visual Studio(或任何其他开发系统的等效项)中执行此操作 - 该服务不会告诉您可用的内容 - 您必须知道一些另一种方式.
这可以追溯到旧的"通过默默无闻的安全"辩论.隐藏您的服务并不是保护它的好方法.研究使用SSL和真正的身份验证方法,而不是仅仅试图"隐藏"它.
此外,更直接地回答您的问题:如果浏览器知道您的服务地址(并且必须为了让您的页面通过JavaScript或您拥有的内容来调用它),那么任何人都可以轻松找到它.无论您尝试在页面源中隐藏URL多少,都可以通过监视Fiddler或Firebug中的HTTP事务来查看服务地址和请求的格式/内容.
| 归档时间: |
|
| 查看次数: |
4200 次 |
| 最近记录: |