защита slim 3, RESTful API

Я знаю, как реализовать аутентификацию на основе токенов. Но меня беспокоят действия пользователя, такие как регистрация, вход или проверка, против атакующих ботов. Я могу себе представить бота, отправляющего запросы через поддельные телефонные номера, и мой SMS или почтовый сервер ответит на все из них! Или тысячи зарегистрированных пользователей находятся в таблице пользователей в базе данных, которые являются поддельными и не проверенными. Я знаю некоторые стратегии брандмауэра для блокировки таких атак и трафика на сетевом уровне. Но можно ли защитить «неаутентифицированные» HTTP-действия с помощью кода Captcha или другим способом?

Если да, то как отправить изображение капчи с сервера API на клиент? в RAW? если отправить капчу можно, то как определить, какая капча для какого клиента? Сессия может быть полезной?

Спасибо за внимание.


person cybercoder    schedule 21.08.2017    source источник


Ответы (1)


Вы можете реализовать ловушку CSRF (подделка межсайтового запроса), чтобы избежать этого. Я использую комбинацию полей CSRF и honeypot. Вот основное изложение:

  1. Сервер заполняет поле с помощью входного тега скрытого типа, содержащего значение, которое устанавливается на лету и сохраняется на сервере как переменная сеанса.
  2. Форма также содержит текстовое поле (type="text" или textarea), скрытое с помощью CSS.
  3. Когда мы публикуем форму, токен скрытого значения (CSRF) должен соответствовать сохраненной версии сеанса, и
  4. Поле приманки должно быть пустым.

Если тесты не пройдены, я отвечаю 401 или 404.

Reg-боты обычно заполняют поля-приманки, а некоторые достаточно умны, чтобы обойти CSRF — я регистрирую все попытки, которые не проходят эти тесты, и фиксирую довольно много попыток ботов.

person RichGoldMD    schedule 21.08.2017
comment
Представьте, что у меня есть веб-интерфейс на другом сервере для регистрации пользователей. Взглянув на исходный код HTML и JS, злоумышленник может подготовиться к эффективной атаке. - person cybercoder; 22.08.2017
comment
Это всегда так. Цель состоит в том, чтобы максимально уменьшить количество ложных записей. В моем случае имя поля CSRF, а также значение меняются при каждой итерации. Поле горшка с медом не меняется. Многие рег-боты публикуют сообщения без проверки формы более одного раза, они просто повторно отправляют сообщения. Другие проверяют форму на наличие полей и заполняют их. Вы также можете реализовать Captcha и другие эвристики поверх этого. Если вы это сделаете, я бы порекомендовал использовать для этого установленный сервис, а не запускать свой собственный, если вам разрешено (например, Google Recaptcha), поскольку они очень зрелые. - person RichGoldMD; 22.08.2017