限制公共Web应用程序访问特定动态源IP地址

时间:2017-06-27 07:26:12

标签: laravel web-applications authorization dynamic-ip ip-restrictions

我正在使用公共云上的Laravel托管开发Web应用程序。现在,可以通过域名在互联网上公开访问该应用程序。但是,我想限制只有连接到组织网络的用户才能使用该应用程序,因为我们不希望该应用程序在家中或其他地方使用。

目前,该组织有2个位置(2个公共互联网),他们必须能够访问该应用程序。它们都使用家庭标准互联网,每次互联网重新连接时IP地址都会发生变化。由于我们没有静态IP地址,因此无法使用IP地址过滤器过滤用户。每次重新连接组织网络时,都必须更改IP过滤规则。

我的应用程序已经具有可靠的身份验证和授权机制,当然,用户必须知道此信息,因为他们必须访问应用程序才能工作。但是,这不符合要求。

我已经考虑过VPN但它(可能)并不起作用,因为如果我们允许用户访问VPN,他们仍然可以在任何地方访问VPN并在工作场所之外使用该应用程序。如果我们限制VPN客户端从特定IP地址访问,那么当IP更改时,会出现同样的问题。

总而言之,我想询问有关如何限制托管在公共互联网上的Web应用程序访问从公共IP地址连接的用户的建议,每次互联网重新连接时都可以更改。这个要求可能听起来很奇怪,但事实并非如此。如果您愿意,请随时询问更多详细信息并对建议进行讨论。

提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以在客户端为动态DNS服务(例如dyndns)设置客户端。

然后,您可以在服务器端使用它来始终使用该dns检查当前的IP。

作为替代方案,您可以将网站绑定到localhost,并且只允许通过pubkey强制的SSH隧道访问它(并使其由客户端上的脚本/调度程序自动建立,在用户的覆盖范围,以便他们无法在任何地方获取连接所需的私钥)

答案 1 :(得分:1)

您可以使用不同的PHP方法和变量来检测请求的来源。只需将您的域和组织列入白名单,并仅通过添加中间件来允许它们。

此外,您可以使用Laravel Passport生成令牌,或者您可以创建自己的机制,然后使用该令牌验证请求是否有效。

由于IP更改,您可以设置动态DNS或按照上面的注释建议。