在内部网络中为我的自托管Web API 提供互联网访问。这会带来安全威胁吗?

3

首先,我对Web API / CORS和安全实现相对较新。

这个问题是关于安全性的。Web API存储了极其敏感的数据,并提供给客户在线执行交易的功能。

情境:

  • 我有一个Web API作为一个自托管的Windows服务,使用固定端口。
  • Web API位于内部网络的防火墙/ DMZ后面。
  • Web API(使用CORS)只允许来自外部服务器的流量。
  • 外部服务器使用IIS托管我们的网站。
  • Web API正在使用令牌身份验证(绑定到客户端IP以避免劫持)。
  • 外部网站和内部Web API都强制使用SSL。

问题:

网页通过JavaScript进行ajax调用到Web API。但是,Web API并没有直接暴露在互联网上。

  • 以下设置会产生什么影响?
  • 这样做会给我的网络带来什么样的漏洞?
  • 是否有更好的方法来实现这样的设置?

例如:

  • 用户在浏览器中输入https://test.mydomain.com,并获得一个页面。

  • ajax调用被发往https://test.mydomain.com/api/test/action

  • 外部服务器将https://test.mydomain.com/api消息路由到未公开的内部服务器https://myInternalWebAPI/api/test/action.


1
这是一篇关于保护公共REST Web服务的好文章(在我看来):http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/ - EkoostikMartin
1
@EkoostikMartin 感谢您提供的链接,但是我已经在我的设计中使用了95%的这些实践。我的问题实际上是网络管理员是否会愿意将已经受保护的ajax流量转发到内部webapi。 - Dwayne Hinterlang
除了现有的“安全”(端口隔离、代理、AD)之外,应用程序的安全保护落在我身上,到目前为止,他们并没有在允许服务等方面非常配合,并且对于访问他们的网络非常限制。HTTPS跟进仅仅是为了确保流量从端点到端点的安全。过度实施的方式是为了简化产品的安装(以便他们放心)。 - Dwayne Hinterlang
你是如何将外部的 https://test.mydomain.com/api 路由到内部的 https://myInternalWebAPI/api/test/action 的? - EkoostikMartin
1
反向代理是可以的,但这又是一个网络工程师的事情。 - EkoostikMartin
显示剩余2条评论
1个回答

2

这需要一些工作量,但它已经在生产环境中实施了,所以我想分享解决方案。

我创建了一个 WCF 服务和一个 WebAPI。

主要的 WCF 服务位于内部网络中,并包含所有的业务逻辑和数据库连接。 代理 WebAPI 模仿了 WCF 服务结构,向公众开放。

客户端(JavaScript)调用代理 WebAPI,代理 WebAPI 然后调用托管 WCF 服务的内部服务器,然后就成功了。


做得太容易了。我是否在尝试和你做同样的事情?http://stackoverflow.com/questions/43002283/how-to-allow-internal-mvc-web-api-from-external-site-outside-the-network - Si8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接