没有静态IP,但需要限制对特定位置的访问


No static IP but need to restrict access to a specific location

我有一个小的web函数,只有当用户在办公室时才能运行。但问题是,我们的互联网提供商定期更改其IP,我无法跟踪它。我们办公室有Windows7系统,他们没有任何静态IP。我甚至不能设置一个静态IP,因为它会阻碍互联网提供商的设置,并将停止连接互联网。我现在被卡住了。有没有一种方法可以确保一个人只有在使用该功能时才在办公室?

最可靠的方法是使用MAC地址进行身份验证,因为IP可以更改,MAC地址更难伪造并且不会更改。它是网卡的"序列号"。因此,除非他们把卡带回家,否则他们将无法访问它此后

您可以使用dyndns来获取当前ip。动态dns允许ypou将主机名重新更正为动态ip。

因此,如果你从一个未知的ip收到一个请求,那么距离最后一个请求已经过去了x秒,你可以使用gethostbyname来检索官方ip。

免费动态DNS:

http://www.dnsdynamic.org/

获取IP:

$ip = gethostbyname('http://sample.dnsdynamic.org/');  

一种方法是设置服务器,使其公开两个服务——"A"具有"仅限特殊办公室功能","B"不具有。

然后,设置网络安全,使服务A只能通过VPN隧道从您的办公室访问。

--

另一种方法可能是使用PKI,即为办公计算机安装访问服务A功能所需的证书。然而,尽管很复杂,但具有足够权限和知识的用户仍然可以复制证书并在家中安装。

如果你的用户不是书呆子,你可以在办公电脑中设置一个特殊的cookie,并在用户每次访问应用程序时进行检查。

(如果您的用户知道设置和取消设置cookie,则会失败,因为他们只会将此行为复制到自己的家中)。

此外,从办公室连接时(即使IP发生变化),仍应存在特定的IP范围,对一些IP进行采样,并检查重复出现的模式。

在您的办公室用户授权后,为他们提供某种令牌。然后使用令牌来确定是否授予访问权限。

令牌可以存储在办公室用户计算机上的cookie中,因此只进行一次授权。

如果你可以访问办公网络,你可以尝试配置你的服务器,它可以访问互联网,所以它会在所有请求(发送到你的服务器)中添加一些令牌(cookie?)。您将在代码中检查它。