保护 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 服务的主要内容,如果未能解决你的问题,请参考以下文章

保护IIS Web服务器安全的技巧

保护 RESTful Web 服务 URL [重复]

如何使用 Spring Security 保护 REST Web 服务

保护 REST 服务和 Web 应用程序的最佳方法

保护有状态的 Web 服务

保护 iOS 到 Web 服务的通信