Прием запросов на получение / публикацию только от localhost - PullRequest
17 голосов
/ 26 марта 2012

Поскольку размер данных не так мал, как требуется для загрузки моего веб-приложения, он несколько раз становится довольно медленным, поэтому я решил добавить некоторые функции jQuery ajax для загрузки определенных данных по запросу, а затем сохранить их в кеше.

Что я хотел бы знать, так это как я могу ограничить любые GET или POST запросы только с локального хоста / того же сервера / того же IP-адреса, чтобы я мог избежать любых вызовов извне в мое приложение?

Это означает, что мои функции php, которые возвращают данные, должны возвращать данные только в случае запроса от localhost.

Мое веб-приложение работает на платформе CodeIgniter, а конфигурация моего веб-сервера - LAMP, работающая в Ubuntu.

Есть идеи?

Ответы [ 4 ]

26 голосов
/ 26 марта 2012

в конструкторе вы можете использовать

if ($_SERVER['SERVER_ADDR'] != $_SERVER['REMOTE_ADDR']){
  $this->output->set_status_header(400, 'No Remote Access Allowed');
  exit; //just for good measure
}

Однако, если этот метод не тот, который вы ищете .. используйте .htaccess, вы можете выполнить быстрый поиск в Google, чтобы получить конкретный пример для отказа в получении/ отправить всем, а затем разрешить 127.0.0.1/localhost.

10 голосов
/ 26 марта 2012

Использование .htaccess, вероятно, лучший способ, разрешить только с вашего локального адреса и 127.0.0.1.Я нашел этот пример на petergasser.com и изменил его немного:

AuthName "bla"  
AuthType Basic  
<Limit GET POST>  
order deny,allow  
deny from all 
allow from 127.0.0.1
allow from <your-ip-here>
</Limit>  
3 голосов
/ 06 января 2017

Я пользуюсь вот так, благодаря @ gorelative

if( 
isset($_SERVER['REMOTE_ADDR']) AND ( $_SERVER['REMOTE_ADDR'] !== $_SERVER['SERVER_ADDR'] )
){
 die(' Access Denied, Your IP: ' . $_SERVER['REMOTE_ADDR'] );
}
3 голосов
/ 26 марта 2012

Используйте ключ (подумайте о ключах API), чтобы отправить запрос на ваш сервер.Затем на вашем сервере вы проверяете этот ключ и, если он правильный, вы возвращаете данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...