защита вызовов ajax для функций на стороне сервера

#php #security #codeigniter

#php #Безопасность #codeigniter

Вопрос:

У меня есть приложение codeigniter, в котором я делаю большую часть вещей с помощью вызовов ajax. Например, давайте рассмотрим создание учетной записи. Существует форма с четырьмя полями: имя пользователя, пароль, адрес электронной почты и мобильный телефон.

 frm = $("signupform").serializearray();
$.post(base_url   "/auth/ajaxlogin/", frm, function(data){
                if(data==="true") {
                    window.location.reload();
                } else {
                   $("#loginresult").show(); 
                }
            });
  

с помощью этого скрипта я забочусь об отправке данных учетной записи в метод создания учетной записи в контроллере авторизации, создании учетной записи и регистрации пользователя. Но я уверен, что это очень уязвимо, скажем, любой пользователь может написать вредоносный скрипт для непрерывного создания учетных записей в своей консоли js. Итак, каков наилучший способ обеспечить определенную функциональность, подобную этой.

Комментарии:

1. Не имеет значения, если его AJAX или стандартная отправка POST, должна иметь санитарную обработку / защиту для смягчения этих типов атак при создании учетной записи.

Ответ №1:

Ajax не имеет значения, насколько это касается сервера, HTTP-запрос является HTTP-запросом.

Используйте обычные подходы для защиты от такого рода атак:

  • Подтвержденный тест на регистрацию, отправленный на адрес электронной почты
  • Ограничение скорости
  • Captcha (только если вышеуказанные не обеспечивают достаточной защиты, они раздражают людей)

Ответ №2:

Каждая страница может содержать уникальный ключ, действительный только в течение короткого периода времени, который является частью отправки. Этот ключ действителен только один раз и всего несколько минут и должен быть действителен для отправки формы, которая будет использоваться. Конечно, ключ будет виден в исходном коде, но поскольку он действителен только один раз, это предотвратит непрерывное создание учетной записи.

Вы также можете уменьшить и запутать свой JS, это затруднит атаку злоумышленников на ваш сайт.

Комментарии:

1. Но можно отменить минимизацию и запутывание простым способом.

2. Зачем вообще беспокоиться об обратном? Просто отслеживайте HTTP-запросы, используя что-то вроде Firebug.

Ответ №3:

Существует множество способов реализации безопасности, но если вы хотите заблокировать отдельные злоупотребления пользователей, почему бы не проверять IP входящих запросов и блокировать повторные запросы, поступающие с того же IP, скажем, в течение X минут? Это не будет исправлением всего, но это дополнительный уровень, который можно добавить с помощью других методологий.