我开发了一个应用程序。该应用程序用于不同领域的多个办事处。
我的要求是,我想限制该应用程序必须只打开办公室网络,而不是在外面。
我使用angular作为前端技术,使用PHP作为后端技术。
谢谢,SrinivasaRao.CH
答案 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)