Кто виноват и как с этим бороться: о безопасности веб-приложений
Все слышали о SQL-инъекциях, XSS, DoS, DDoS. Кто-то уходил дальше и рассказывал о других методах код-инклудинга, сниффинга, брутфорсинга. И только один из десяти кандидатов на собеседовании может полностью описать последствия удачно осуществлённой SQL-инъекции. Но самое неприятное, что практически все абсолютно уверены, что фильтрация всех получаемых от пользователя данных гарантирует отсутствие уязвимостей в коде.
Возможно, именно эта уверенность на сегодняшний день играет на руку злоумышленникам. Хотя бы потому, что фильтрация данных никак не позволит защититься от того, что конкуренты сольют базу данных ваших пользователей, просто прогоняя купленную по дешевке базу данных email’ов в форму восстановления пароля в случае, когда приложение отвечает, что данный email не зарегистрирован.
А как насчёт реализованной таким «кустарём» биллинговой системы, в которой в качестве ID-транзакций используется простой инкремент? Такая ошибка, как минимум, позволяет выяснить реальный месячный оборот компании.
Вам кажется, это не так серьезно?
Хорошо, можете ли вы поручиться, что в тех.поддержке смогут распознать мошенника, который, просто предугадав номер транзакции, потребует вернуть ему деньги на карту?
Или ещё пример, когда одна известная компания потеряла около 200 000$ из-за небрежности, допущенной ведущим программистом при инициализации переменных. При этом ни автоматизированные тесты, ни ручные тесты не смогли отловить эту ошибку.
А ещё никакая фильтрация данных не спасёт вас, если перед сезонными распродажами (black friday, etc) конкуренты просто сольют ваш бюджет, выделенный на SMS-подтверждения при регистрации пользователей.
Ну и напоследок
Большинство сайтов, написанных начинающими программистами, легко «положить»: просто всем офисом дружно зажмите «F5» на странице с чувствительной к изменениям информацией типа добавления товара в корзину или checkout-корзины.
Вывод
Если вы планируете развиваться в области веб-разработки, не стоит формально подходить к вопросу о защите приложений. Не останавливайтесь в изучении этого вопроса на уровне «просто фильтруй все входные данные». А разберитесь во всех известных способах атак. И, самое главное, помните, какие цели преследуют злоумышленники, чтобы грамотно продумать стратегию защиты.
Есть вопрос? Напишите в комментариях!