Поскольку размер данных не так много, что мое веб-приложение нужно загружать, оно становится довольно медленным несколько раз, поэтому я решил добавить некоторые функции jQuery ajax для загрузки определенных данных по запросу, а затем сохранить их в кеше.
Я хотел бы знать, как ограничить любые запросы GET
или POST
только с localhost / same server / same ip, чтобы я мог избежать любых вызовов извне в мое приложение?
Это означает, что мои php-функции, которые возвращают данные, должны возвращать данные только при запросе с localhost.
Мое веб-приложение работает на основе CodeIgniter, а конфигурация моего веб-сервера – LAMP, работающая на ubuntu.
Есть идеи?
в конструкторе, который вы могли бы использовать
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.
Использование .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>
Используйте ключ (подумайте о ключах API), чтобы отправить запрос на ваш сервер. Затем на вашем сервере вы проверяете этот ключ, и если он правильный, вы возвращаете данные.
Я использую это, благодаря @gorelative
if( isset($_SERVER['REMOTE_ADDR']) AND ( $_SERVER['REMOTE_ADDR'] !== $_SERVER['SERVER_ADDR'] ) ){ die(' Access Denied, Your IP: ' . $_SERVER['REMOTE_ADDR'] ); }