Как ограничить применение для конкретной сети - PullRequest
0 голосов
/ 10 июня 2018

Я разработал одно приложение.Это приложение используется в нескольких офисах в разных областях.

Мое требование: я хочу ограничить то, что приложение должно открываться, только для офисных сетей, а не снаружи.

Я использую Angular в качестве технологии переднего плана и PHP в качестве технологии внутреннего интерфейса.

Спасибо, SrinivasaRao.CH

1 Ответ

0 голосов
/ 10 июня 2018

Самый простой способ - разместить приложение в диапазоне частных адресов подсети и убедиться, что маршрутизатор не перенаправляет внешний порт на ваш внутренний сервер.Это на самом деле поведение по умолчанию, потому что переадресацию портов необходимо настроить явно.

Поскольку вы задаете этот вопрос как вопрос PHP, единственно возможный подход PHP заключается в проверке значения переменной $_SERVER['REMOTE_ADDR'] в каждом запросе ипроверьте, соответствует ли он белому списку диапазонов IP-адресов.Эта переменная является строковым представлением адреса, читаемым человеком, но ее можно легко преобразовать в нормализованное представление, которое позволяет проводить прямые сравнения со стандартными операторами сравнения :

(помните, что математика с 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...