【发布时间】:2020-09-01 20:55:51
【问题描述】:
这一切都是我工作的公司的一位开发人员要求的,以便该开发人员拥有一个可供公司员工使用的公开可用的网络应用程序。
我设置了一个运行 Debian/Nginx 的公共 Web 服务器(使用第三方主机),我们在其中托管一个 Angular js 应用程序作为前端。 他需要后端连接到我们的内部 SQL 服务器。 他使用 ASP.Net 编写后端。 我将 ASP.Net 代码放在 DMZ 中的 IIS 服务器上,只允许 SQL 从 DMZ 服务器访问内部 SQL 服务器服务。 我将公司防火墙设置为仅允许从公共 Web 服务器 IP(如上所述)访问后端 IIS 网站(在 DMZ 上运行)的公共 IP,这样其他任何人都不会看到该公共 IIS 网站存在。 在第 3 方托管的面向公众的网站上运行的 Angular JS 应用程序连接到非面向公众的 IIS 网站以请求数据并在浏览器中显示给最终用户。
问题是,如果最终用户无法访问非面向公众的 IIS 网站,这整件事就无法工作。
我的印象是前端 Angular JS 站点会请求其数据,进行操作,然后将其显示给最终用户。这样最终用户只需要能够访问公开的网站即可。
他告诉我,Angular JS 无法做到这一点。
这是他特意告诉我的;
“所以我现在的理解是,当这个 Angular 应用程序启动时,它实际上只是一个传统网页(例如 index.html),然后整个应用程序在浏览器中作为打字稿运行,除了图像文件和其他资产. 向 API 服务器发出数据请求的是客户端 PC 上的打字稿,而不是您在传统 Web 服务器应用程序中所期望的 Linux 服务器。”
在过去的几年里,我们在两端都使用 ASP.net 进行了这种精确的设置。 DMZ 后端服务器从未向公众公开。我不是开发人员,但我有安全意识,不能支持向公众开放 IIS 网站。
我错了吗?他有没有办法使用 Angular JS 从后端获取数据并在最终用户不需要访问后端服务器的情况下对其进行操作/显示?
很抱歉这个问题有多长,我想确保包含详细信息。
【问题讨论】:
-
“我们在两端都使用 ASP.net 进行了这种精确的设置。”这是 ASP.NET 和 Angular 之间的主要区别。
-
那么他所说的 Angular 无法做到这一点是正确的吗?
-
是的,也不是。您的 API 可以调用其他 API,因此 Angular 服务器(不是 AngularJs,因为 typescript 是 Angular 2+)为客户端提供编译为 JS/CSS、HTML 等的 typescript / html / css/ 图像。客户端可以调用 Angular Web 服务器,请求它充当中间件并调用您的内部服务/数据库。
-
第二条评论,也许更有用:这将作为题外话关闭,看看它与 IS 的关系,而不是代码。但是应该有一个系统管理员/网络的堆栈站点。
标签: asp.net angular security iis