Пояснительная бригада: лучшая защита в мире

Пояснительная бригада: лучшая защита в мире

Поясняет редакция «Кода»:

За спиной программиста стоят коллеги и с изумлением смотрят на его экран. К ним подходит ещё один человек и спрашивает: «Эй! Что тут у вас?» (Hey! What’s going on?). Программист завершает какую-то задачу и поднимает большой палец — готово. Коллеги шокированы: один рвёт на себе волосы, другой седеет на глазах, подошедший к ним человек выплёвывает кофе, а девушка восклицает: «Чёртов извращенец!» (Sick bastard!). Наконец, мы видим код на экране программиста:

// brute-force attack protection

if isPasswordCorrect
  && isFirstLoginAttempt {
  Error("Wrong login or password")
}

Комментарий // brute-force attack protection сообщает, что следующие за ним строчки кода написаны для защиты от атаки методом перебора (brute-force attack). Это метод взлома, при котором злоумышленник пытается войти в систему или получить доступ к защищённым данным, пробуя разные комбинации паролей или ключей. Например, для взлома пароля можно последовательно проверять все возможные комбинации символов до тех пор, пока не будет найден правильный пароль. Если пароль простой, его можно быстро подобрать таким образом.

Теперь разберём сам код:

  • if isPasswordCorrect = «если введён корректный пароль»,
  • && isFirstLoginAttempt = «и это первая попытка входа»,
  • Error("Wrong login or password") = «тогда выдать ошибку: „Неправильный логин или пароль“».

В принципе, какая-то логика в этом подходе есть. Если злоумышленнику удастся подобрать правильный пароль, то система его не пропустит, и он продолжит подбирать пароли дальше — очевидно неправильные. Это защитит аккаунт от взлома, потому что никто не ожидает от системы такого поведения и не станет вводить пароль повторно для проверки, не зная наверняка, что он правильный. Тем более это не станет делать программа, которую используют для автоматического перебора комбинаций. А настоящий владелец аккаунта, наоборот, введёт правильный пароль повторно и сможет войти в систему.

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

Коллеги программиста отреагировали так бурно, потому что восприняли код как издевательство над пользователями или как серьёзную ошибку. Хотя, чёрт возьми, как ещё защитить пользователей от взлома, если их пароли легко подобрать?

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме