如何限制特定网络的应用程序

时间:2018-06-10 09:36:29

标签: php angularjs

我开发了一个应用程序。该应用程序用于不同领域的多个办事处。

我的要求是,我想限制该应用程序必须只打开办公室网络,而不是在外面。

我使用angular作为前端技术,使用PHP作为后端技术。

谢谢,SrinivasaRao.CH

1 个答案:

答案 0 :(得分:0)

最直接的方法是将应用程序托管在子网专用地址范围内,并确保路由器不会将任何外部端口转发到内部服务器。这实际上是默认行为,因为需要明确配置端口转发。

由于您将此问为PHP问题,唯一可能的PHP方法是检查每个请求上$_SERVER['REMOTE_ADDR']变量的值,并验证它是否与白名单IP列表匹配。此变量是地址的字符串化人类可读表示,但它可以很容易地转换为标准化表示,允许与标准comparison operators直接比较:

(请注意,使用ip2long()的数学仅对64位版本的PHP可靠。)

示例:

$network_from = inet_pton('192.168.0.1');
$network_to = inet_pton('192.168.0.255');

// Allowed visitor
$_SERVER['REMOTE_ADDR'] = '192.168.0.5';
$visitor = inet_pton($_SERVER['REMOTE_ADDR']);
var_dump($visitor>=$network_from && $visitor<=$network_to); // bool(true)

// External visitor
$_SERVER['REMOTE_ADDR'] = '151.101.1.69';
$visitor = inet_pton($_SERVER['REMOTE_ADDR']);
var_dump($visitor>=$network_from && $visitor<=$network_to); // bool(false)