Assault & Liferay
Слушай, есть минутка разобраться, почему у некоторых старых систем, которые всё ещё без проблем проходят тесты, на самом деле меньше уязвимостей, чем у этих новеньких фреймворков, которые мы постоянно переписываем?
Служебный код, как правило, строится по нескольким проверенным схемам, поэтому возможностей для взлома меньше. Код простой, использует небольшой набор библиотек, и каждая функция четко ограничена. А когда подключаешь новый, модный фреймворк, тянешь за собой десятки сторонних модулей, промежуточного ПО, плагинов и целую новую API-поверхность. Это значит, что тебе нужно держать в голове огромный объем кода, чтобы защититься от инъекций, межсайтового скриптинга, повышения привилегий – что угодно.
К тому же, новички часто начинают работать с новым стеком, как с чистым листом, быстро пихают туда фичи, забывая про принцип "безопасность прежде всего", который защищал старый код. Тесты могут проходить успешно, но они проверяют только то, что в них прописано – а не всю потенциальную область для атак.
Короче говоря: рефакторить нужно, но сначала проведи оценку рисков. Минимизируй область для атак, проверяй сторонние пакеты и не думай, что успешные тесты гарантируют безопасность.
Конечно. Подходи к новому стеку как к коду, а не к холсту. Проверяй каждую подключенную библиотеку, уменьшай уязвимую поверхность и пиши тесты, которые реально ищут инъекции. Старое – лаконичное; всё новое и блестящее – шведский стол — относись к каждому блюду с осторожностью.
Отлично. Держи всё под контролем, тщательно проверяй импорт, и пусть тесты выявляют настоящие угрозы. Оптимизированный код — меньше работы для хакеров — не дай разгуляться.
Точно. Усилим контроль, проверим импорт, чтобы тесты реально выявляли угрозы. Держим всё в порядке, чтобы взломщикам было сложно.