【问题标题】:Is it possible to restrict web service access to it's own web app?是否可以限制对其自己的网络应用程序的网络服务访问?
【发布时间】:2015-06-27 17:19:37
【问题描述】:

是否可以阻止从域外连接到 Web 服务(服务器)?

例如,考虑一个使用 Twitter 的“仅应用程序身份验证”从 Twitter 的 API 获取数据的网络应用程序。 Web 应用程序的客户端使用 AJAX 调用它自己的服务器,该服务器又使用 Twitter 的令牌调用 Twitter 的 API。

虽然令牌永远不会暴露给客户端代码,但是否有任何东西可以阻止外部服务器端应用程序使用客户端使用的 URL 调用 Web 应用程序的服务器,例如耗尽 Twitter 令牌速率限制?

【问题讨论】:

    标签: web-services security


    【解决方案1】:

    是否可以阻止与域外的 Web 服务(服务器)的连接?

    当然。将您的网络服务器的访问控制列表设置为从您的 IP 范围之外删除连接。或者,安装防火墙。这很简单,但我怀疑您所说的“在其域之外”是指其他意思?

    根据您的描述,您似乎真的在询问您是否确认您只是在与您自己的客户端应用程序交谈。作为一般规则,没有。您可以验证用户。这很容易。如果用户未登录且未授权使用您的服务,则您不会将请求转发到 Twitter。但是您不能对应用程序进行身份验证。

    如果您要接受任何出现的用户,您无法阻止他们使用他们想要的任何客户端。如果您允许它在他们的机器上运行,则无法确保它是您未修改的客户端。他们总是可以修改它,他们总是可以从其他程序向您发送任意流量,您无法区分。在网络上,字节就是字节。

    这并非毫无希望;有些事情你可以做。有关此问题的另一个版本,请参阅https://stackoverflow.com/a/9183066/97337,并链接到该问题的其他几个版本。 (它们的询问方式并不完全相同,但它们最终得到的答案基本相同。)

    【讨论】:

      【解决方案2】:

      您应该使用用户和密码安全性或证书安全性来保护您的 Web 服务。基本思想是 Web 服务客户端必须进行身份验证才能调用您的 Web 服务。

      这里有一些技术(还有其他的或变体):

      1) HTTP 基本认证和 HTTPS

      2) 相互 SSL 身份验证 - 也称为双向身份验证,是两个实体相互进行身份验证的过程。服务器向客户端提供证书,客户端向服务器提供证书。

      3) 通过 SOAP Web 服务,您可以使用 WS-Security 标准。

      4) OAuth 框架

      5) 对于 Rest 服务,您可以使用选项 1)、2)、4)。或者自己实现一个。 This 是很好的推荐。

      如您所见,有很多方法可以保护 Web 服务。

      【讨论】:

      • 请注意,如果您要对服务的用户进行身份验证,所有这些都非常有用(因为您可以为每个人提供一个他们将部分存储在脑海中的凭据)。它们对于验证应用程序没有用。
      • 好点,但正如@RobNapier 所说,我的意思是“应用程序身份验证”情况,用户不进行身份验证。
      猜你喜欢
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 2023-01-14
      • 2019-09-20
      • 2013-03-26
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      相关资源
      最近更新 更多