#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 минут? Это не будет исправлением всего, но это дополнительный уровень, который можно добавить с помощью других методологий.