保护 Web 服务
Posted
技术标签:
【中文标题】保护 Web 服务【英文标题】:Securing a Web Service 【发布时间】:2010-09-12 09:02:15 【问题描述】:我的生产 Web 服务器上有一个带有一些 Web 方法的 Web 服务 (ASMX)。在一个单独的内部 Web 服务器(未公开)上,我有另一个 Web 站点将使用 ASMX 的公共 Web 方法。的最佳方法有哪些,以便只有内部 Web 服务器才能访问在公开的 Web 服务器上运行的 Web 服务?
【问题讨论】:
【参考方案1】:最简单的方法之一是在消息的soap 标头中传递凭据。因此,每个调用都会传递确定用户是否被授权所需的信息。 WSE 使其中一些变得更容易,但可以在 Rocky Lhotka 的关于 Business Objects 的书中找到对该过程最简洁的描述之一。我有很多书要出版商审阅,而这本书有最好的解释
【讨论】:
【参考方案2】:假设您没有使用 WCF 的选项,我建议您使用 WSE 3(Web 服务增强)。您可以在MS's site 获得工具包/SDK 的东西
为了限制对内部机器的访问(我认为您的问题是这样的),我会在 IIS 中建立一个单独的网站,并将其设置为仅响应您服务器的内部 IP 地址。
【讨论】:
【参考方案3】:我会设置防火墙规则来限制对 IP 地址白名单的访问。
【讨论】:
【参考方案4】:使用 IIS 的 directory security IP address restrictions,并将访问限制为仅访问该内部 Web 服务器 IP 地址。
如果你不能这样做,并且你不能在目录上设置用户名/密码,然后使用 WSE 并将用户名/密码添加到服务中,或者如果你想要一些乐趣,请查看证书 咧嘴一笑
【讨论】:
【参考方案5】:也许我没有理解正确,但是如果 Web 方法只供内部服务器使用,为什么还要公开公开它们呢?
【讨论】:
实际上,我认为您的理解是正确的。这让我想知道为什么 Web 服务甚至通过端口转发暴露???【参考方案6】:一个简单的 HTTP 模块就可以工作。只需硬编码(或从配置)允许的 IP/主机并拒绝所有其他的。
【讨论】:
【参考方案7】:如果只有内部服务器会访问 asmx 文件?您可以在 IIS 中将它们设置在单独的网站或虚拟目录下,然后在该站点上设置一些 IP 限制。在属性中,进入目录安全性,然后进入“IP 地址和域名限制”。
此外,对于密码,WSE 3 是新的首选,但我确实在 Apress 的一本名为“Pro ASP.NET 2.0 in C# 2005”第 34 章的书中找到了一个简单的方法。(注意,较新版本的本书省略了这一章。)该部分是自定义的基于票证的身份验证。
【讨论】:
Books24x7 和 Safari 订阅来救援 :) 我会看看第 34 章。谢谢。【参考方案8】:此时我想到的是 IIS 上的 IP 过滤。快速应用,应该适用于您的场景。
【讨论】:
【参考方案9】:带有客户端证书的 TLS。请参阅Wikipedia entry 以开始使用。
【讨论】:
【参考方案10】:注意there are ways around 将 IP 列入白名单。不要误会,这是个好主意,你当然应该这样做,但如果你的预算/资源允许,你可以扩展你的威胁模型。
【讨论】:
以上是关于保护 Web 服务的主要内容,如果未能解决你的问题,请参考以下文章