Принимать запросы на получение/отправку только с локального хоста
Поскольку размер данных не так много, что мое веб-приложение нужно загружать, оно становится довольно медленным несколько раз, поэтому я решил добавить некоторые функции 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'] );
}