#ruby-on-rails #ruby #multithreading #thread-safety #sleep
#ruby-on-rails #ruby #многопоточность #потокобезопасность #спящий режим
Вопрос:
Я пишу приложение Rails и действительно фокусируюсь на безопасности. Впоследствии, один из подходов, который я использую для уменьшения атак методом перебора, заключается в sleep 2
выполнении любого запроса на вход, который завершается неудачей. Это значительно увеличивает время работы бота, делая практически невозможным применение грубой силы. (Я также разрешаю только такое количество запросов на IP и т.д.).
Однако, когда я sleep 2
, все остальные запросы также приостанавливаются на 2 секунды? Я знаю, что rails еще не полностью потокобезопасен (хотя в файлах конфигурации для threadsafe!
есть опция закомментирования…
Есть ли лучший подход и / или способ перехода в спящий режим только для потока грубой силы?
Ответ №1:
Вместо того, чтобы спать в течение 2 секунд, я бы просто предложил ограничить количество попыток входа в систему на IP-адрес, чтобы ограничить вероятность применения грубой силы.
Установка предела примерно в десять кажется довольно хорошим компромиссом для
- Не раздражать законных пользователей
- Остановить атаки методом перебора
Если это решение кажется вам слишком сложным, существует множество библиотек аутентификации Rails, в которые встроена эта функция (настраиваемая), например:
Комментарии:
1. на самом деле это неправда. Я могу легко написать скрипт, который случайным образом генерирует новый IP для каждого запроса, так что это не сильно помогает. Это нелегальное приложение, но оно предназначено для обучения студентов тому, как предотвращать попытки вторжения и реагировать на них. кроме того, я презираю authlogic или devise или даже nifty auth. SO завален людьми, которые используют предварительно созданную аутентификацию и понятия не имеют, как это работает. это действительно раздражает.
2. Я на 100% согласен с предварительно созданными библиотеками, однако я думаю, что это отличный метод для реализации. Я не утверждаю, что это единственный вариант, однако это не просто какая-то академическая идея для обучения студентов. Эта идея была реализована в большинстве систем безопасности, даже в базовых системах, таких как iptables и deny host.