Принимать запросы на получение/отправку только с локального хоста

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

Я хотел бы знать, как ограничить любые запросы GET или POST только с localhost/same server/same ip, чтобы я мог избежать любых вызовов извне в мое приложение?

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

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

Любые идеи?

Ответы

Ответ 1

в конструкторе, который вы могли бы использовать

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.

Ответ 2

Использование .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

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

Ответ 4

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

if( 
isset($_SERVER['REMOTE_ADDR']) AND ( $_SERVER['REMOTE_ADDR'] !== $_SERVER['SERVER_ADDR'] )
){
 die(' Access Denied, Your IP: ' . $_SERVER['REMOTE_ADDR'] );
}