【问题标题】:Restrict public web application access to specific dynamic source IP addresses限制公共 Web 应用程序对特定动态源 IP 地址的访问
【发布时间】:2017-11-30 03:59:08
【问题描述】:

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

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

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

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

总而言之,我想请教一下如何将托管在公共 Internet 上的 Web 应用程序的访问权限限制为从公共 IP 地址连接的用户,该 IP 地址每次重新连接互联网时都会更改.这个要求可能听起来很奇怪,但事实就是如此。如果您想就这些建议进行讨论,请随时询问更多详细信息。

提前谢谢你。

【问题讨论】:

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


    【解决方案1】:

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

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

    作为替代方案,您可以仅将网站绑定到 localhost,并且只允许通过 pubkey-enforced SSH 隧道访问它(并使其由客户端的脚本/调度程序在权限级别之外自动建立用户的范围,因此他们无法将连接所需的私钥带到任何地方)

    【讨论】:

    • DDNS 解决方案很有趣,也许我可以在我的路由器上设置它,而不是在客户端设备上,因为即使他们使用其他网络它也会改变,并检查 Web 应用程序上客户端的 IP 与DDNS 域。我会尽快尝试的。对于 SSH 隧道来说可能太复杂了。
    【解决方案2】:

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

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

    由于 IP 更改,您可以设置动态 dns 或按照上面评论中的建议。

    【讨论】:

    • 使用 PHP 来检查 DDNS 域的 IP 是可行的。我很快就会试试这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 2015-05-03
    • 2014-12-16
    相关资源
    最近更新 更多