我开发了一个 MVC 网络应用程序。现在,客户在办公区使用这个应用程序。客户要求除了办公室的个人电脑/平板电脑外,任何人都不得在任何设备上使用此应用程序。
现在的问题是,它是一个网络应用程序,那么我该如何限制任何人都不能在办公室外使用这个应用程序或使用除办公室的 PC/平板电脑以外的设备?
我开发了一个 MVC 网络应用程序。现在,客户在办公区使用这个应用程序。客户要求除了办公室的个人电脑/平板电脑外,任何人都不得在任何设备上使用此应用程序。
现在的问题是,它是一个网络应用程序,那么我该如何限制任何人都不能在办公室外使用这个应用程序或使用除办公室的 PC/平板电脑以外的设备?
您可以做几件事来帮助将应用程序的使用限制在特定的办公地点和特定的设备上,尽管正如其他答案指出的那样,它们都不是绝对的保护
正如我所说,这些不是绝对的,但安全方面没有什么是绝对的。如果您的客户正在寻找的只是阻止人们在公司之外看到他们的网站,我会使用源 IP 地址过滤器方法。
您只需要将 Web 应用程序托管在未连接到 Internet 的 Intranet 上的服务器上。
适当的路由和防火墙措施应确保没有连接到本地网络的任何人都无法访问 Web 应用程序。
如果网络外的人需要访问 Web 应用程序,请让他们设置与本地网络的 VPN 连接。
这可能是您可以做到的“安全”。这在技术上并不安全。正如Rook所说,这里仍有可利用的东西。以下是您可以尝试强化系统的几个步骤:
在办公室 LAN 上的物理服务器上设置 Web 服务器。不要使用NAT将任何外部流量连接到网络服务器。如果服务器用于其他站点,则它们应该位于不同的服务器或 VM 上。
设置 SSL VPN防火墙(想到思科)。思科有适用于 iPad 的应用程序,可用于设置与路由器的“安全”隧道。
通过 VPN(远程)进行身份验证后,您将在特定指定范围内分配一个本地 IP 地址(这取决于连接到服务器的客户端数量)。根据路由器,您可以分配规则。因为您无法控制 VPN 另一端的网络(假设是用户的家庭网络),所以这是一个潜在的攻击媒介。
本地流量和 VPN 流量需要具有不同的 IP 范围才能进行跟踪。本地流量应具有由DHCP 服务器分配的 MAC 地址(可欺骗)分配的静态 IP 地址,这些地址均已记录。这将帮助您检查冲突以及欺骗的 IP 地址和 MAC 地址。
在网络服务器的防火墙上,您将设置一个可以连接到网络服务器的地址子网。这将包括在路由器中为用户分配的 VPN 范围和列入白名单的内部静态 IP 地址。
然后在 Web 服务器本身上,您可以通过您在 DHCP 服务器和本地防火墙中设置的白名单 IP 地址( IIS 7和Apache )限制对网站的访问(如果有人发现用于更改的漏洞,这是多余的*Nix 框中的 iptables)。
如果您使用像卡巴斯基这样的企业售后软件防火墙(在 Windows 或 Linux 机器上),您也可以通过这种方式阻止流量。
要对此系统进行更改: 1. 需要在内部 DHCP 服务器上更新 IP 地址列表 2. 在网络服务器的防火墙中 3. 在网络服务器配置中
这样就“锁定”了对实际 Web 服务器的访问......
接下来,您需要在网络服务器上运行SSL,并要求用户提供特定的用户名和密码。密码应至少为 16 个字符。
一旦用户在网络服务器上进行身份验证,您将通过短信或电子邮件向他们发送一条消息,其中包含一次性或一次性密码,允许用户在服务器上被列入白名单一段时间. (如果有人可以访问用户的手机,这可能会受到损害)。如果用户关闭浏览器窗口,他们必须重新进行身份验证(这应该终止会话)。你可以设置一个keep-alive以 Javascript 之类的语言运行的脚本,该脚本期望在特定时间范围内从客户端进行传输。如果客户端没有回答,则终止会话。(这可以防止禁用 javascript 进行访问。它还有助于人们在旧会话过期之前关闭浏览器并尝试打开新会话。)他们一次只能从一个位置登录。
您应该阻止用户将密码存储在他们的设备上。(这可以通过 Firefox 等浏览器中的插件绕过。)
为了让事情变得更严格,你甚至可以要求平板电脑通过 VNC 或 RDP 之类的东西登录到虚拟终端(在手机上并不理想)。然后他们将不得不在虚拟机上使用 Web 客户端。此 VM 将在下次运行或连接时恢复为清理状态。
任何了解该系统的人都可以利用它。系统外的任何人都必须花费大量时间试图进入,他们需要知道系统的存在。
所有方面都需要记录在案。如果有人有文档,他们可以尝试找出系统中的弱点。
这又归结为人们。随着时间的推移,任何可以访问信息的人都可以存储所有信息的副本(手机屏幕截图、办公文档的文本 PDF 等)。SSL 也是可破解的,因此即使加密的“安全”连接也可以被正确读取人们。
你想要达到的目标是不可能的。HTTP 并非旨在提供特定于硬件的标识符,唯一的“标识符”是根本不识别的用户代理,并且它可以被欺骗,因此浏览器甚至无法访问该信息。
即使使用客户端证书,它也可以从浏览器导出到另一台设备。
告诉你的客户这在技术上是不可能的。