Ajax просит не всех открывать - PullRequest
4 голосов
/ 14 ноября 2011

Я создал веб-приложение, используя CodeIgniter.В приложении есть несколько мест, где я использую ajax.

Я хочу знать, есть ли способ остановить прямой доступ и запрос к контроллеру ajax и разрешить обработку только законных запросов ajax, исходящих со страницы.

Спасибо.

1 Ответ

5 голосов
/ 15 ноября 2011

Да, вы можете сделать это без проблем.У входного класса CodeIgniter есть метод is_ajax_request ().Просто проверьте это в начале действия вашего контроллера.Например:

function ajax_save() {
    if ($this->input->is_ajax_request()) {
        //continue on as per usual
    } else {
        show_error("No direct access allowed");
        //or redirect to wherever you would like
    }
}

Если у вас есть контроллеры, которые полностью предназначены для вызовов ajax, вы можете поместить это выражение if в конструктор function __construct() для контроллера.Не забудьте сначала вызвать parent :: __ constructor ()!

Редактировать: Что касается «исходящих со страницы», вам, вероятно, следует выполнять проверку подлинности + проверки безопасности (вероятно, через сеанс, чтобы не попастьбаза данных) по вашему запросу ajax.Таким образом, пользователь-мошенник, не связанный с вашим веб-приложением, в любом случае не должен иметь возможность отправлять ajax-запрос вручную.Надеюсь, что это отвечает на ваш вопрос.

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