Безопасность AJAX?

431
08 марта 2017, 20:46

Можно мне разъяснить про безопасность AJAX запросов. Если у меня работает такой код:

        $.ajax({
        type: 'POST',
        url: "ajax.php",
        dataType: 'text',
        data: data,
        success: function(result) {
            $('#Res').html(result);
        }

Может ли злоумышленник отправить POST-запрос напрямую и изменить таким образом настройку в системе? В каком случае он это может сделать? Как это предотвратить? Какие-то секретные данные я не могу очевидно передавать, ведь их можно перехватить? Знаю про проверку заголовка на ajax это или нет, но это не надёжный метод

Answer 1

Чтобы кто то изменил конфиги, и подобные "скрытые" вещи, то нужно делать как минимум авторизацию, и ставить "юзерам" группы. И если это такая группа, то изменять, если пользователи - то нет прав... По такому типу работает.

Answer 2

Ajax (Asynchronous Javascript And Xml), это аббривеатура означающая технологию отправки запроса на веб-сервер без перезагрузки страницы. В корне этой технологии лежит JavaScript-объект XMLHttpRequest, который отправляет на сервер обычный HTTP запрос, ничем не отличающийся от любого другого, выполненного по средствам любого инструмента (переходу по адресной строке браузера или утилиты CURL)

Может ли злоумышленник отправить POST-запрос напрямую и изменить таким образом настройку в системе?

Когда вы проектируете API-бекенда (т.н. серверная часть, в вашем случае ajax.php), то необходимо понимать, что обратиться к этому API может любой (в случае публичной сети, такой как интернет). Для того, что бы защитить приватную информацию (настройки, в вашем случае), вы должны организовать авторизацию пользователя.

Распространенным сценарием может считаться следующий:

  • Аутентификация пользователя на сервере (вашем или доверенном) путем отправки неких авторизационных данных, таких как логин и пароль.
  • Получения ключа на этом сервере
  • Отправка этого ключа вместе с запросом на сервер для выполнения некого полезного действия (в вашем примере к ajax.php)

Сервер должен проверять такой ключ на предмет принадлежности конкретному авторизованному пользователю и разрешать/запрещать обрабатывать запрос в зависимости от результата проверки.

READ ALSO
CodeIgniter не срабатывает post

CodeIgniter не срабатывает post

мы получаем данные по товару и через POST отправляемВот код контроллера:

282
Как вытащить число из строки? php

Как вытащить число из строки? php

{"10":"OK"} как из этой строки получить число 10?

360
php для начинающего [дубликат]

php для начинающего [дубликат]

На данный вопрос уже ответили:

209