限制 asmx web 服务对特定 IP 地址的访问

Posted

技术标签:

【中文标题】限制 asmx web 服务对特定 IP 地址的访问【英文标题】:Limit access of asmx web service to specific IP addresses 【发布时间】:2009-07-02 17:16:03 【问题描述】:

我需要将 .asmx Web 服务的访问权限限制为特定的 IP 地址。我想我可以在每个方法中添加一个硬编码检查,但这似乎是代码维护的噩梦。是否有我可以制作的 Web 配置条目,或者我可以将 IIS 6 设置应用于 .asmx 文件?

【问题讨论】:

你有访问服务器的权限吗? 是的。当然。它正在运行 IIS 6。 IIS 支持通过 IP 地址等限制访问。 【参考方案1】:

在 IIS 6.0 管理器中,右键单击 .asmx 文件。

转到文件安全选项卡,然后单击 IP 地址和域名限制中的编辑按钮。

点击“拒绝访问”单选按钮,然后将您列入白名单的 IP 地址添加到列表中。

对于 IIS 7.5,这有点棘手,因为文件不会显示在导航面板中。您需要转到“内容视图”选项卡(在窗口的下部),右键单击您的文件并选择“切换到功能视图”。打开 IP 地址和域限制,单击编辑功能设置并选择拒绝未指定的主机。现在您可以通过单击添加允许条目来添加授权。

【讨论】:

请注意,IP 安全是一项未预装在 Windows 7/IIS 7.5 上的功能。您必须添加它:iis.net/configreference/system.webserver/security/ipsecurity/… 很好。我没有意识到你必须单独添加它。【参考方案2】:

将自定义部分添加到您的 web.config,然后在该部分中查询 IP 地址白名单。

【讨论】:

我有一个配置存储部分,但同样,我不想在每个方法上都编写 IP 检查逻辑。我正在寻找更优雅的东西。 IIS 设置,或类似 FormsAuthentication 之类的设置,但只是为了将这个文件限制为我想要的 IP。 我在另一个答案中添加了 IIS 方式,但我会坚持使用这个方式。它会将您的白名单保留在 web.config 中,您的站点配置更多,并让您更加灵活如果您想要比白名单或黑名单更高级的东西。我认为这将是更优雅的解决方案。此外,如果有人更改树下的某些内容并覆盖它,则 IIS 元数据路由可能会丢失。 问题在于每个 Web 服务调用中的代码很难维护,并且会保留在其他开发人员对 .asmx 文件的所有未来添加中(毫无疑问,这会忘记)。 IIS 中的白名单是保持其简单性的最佳方式,因此,如果确实发生更改,则无需通过 QA(时间和资源方面的昂贵过程)发送全新的代码集,然后重新部署(不那么昂贵)作为QA,但仍然浪费人们的时间)。因此,快速的做法是将它们保留在 IIS 6 白名单中。 :) 我可以争辩说 IIS 方法变得更难维护并且可能在迁移到新机器时被遗忘。这一切都归结为 IIS 白名单是否适合您以及更容易维护。很高兴我能帮上忙!

以上是关于限制 asmx web 服务对特定 IP 地址的访问的主要内容,如果未能解决你的问题,请参考以下文章

服务器开了IP限制,如何只让特定的IP访问。

将Azure SQL Server的访问权限限制为特定的azure Web应用程序

Apache访问控制和Web虚拟主机

Linux防火墙iptables限制几个特定ip才能访问服务器?

APache网站服务配置访问控制和构建虚拟主机

如何通过 IP 限制对特定重写的访问