Технический аудит кода: понять, что у вас на самом деле

Услуга аудита кода нужна, когда вы платите за продукт, но не можете проверить, что внутри. Независимая команда смотрит исходный код, архитектуру, базу и сервер. Найденное переводим на язык денег, сроков и рисков: что сломается, сколько стоит исправить, что можно отложить.

Отчёт с оценкой часовПонятно не только программистуРаботаем под NDA
Руководитель и технический специалист разбирают отчёт с цветными метками рисков

Что такое аудит кода и когда он нужен

Аудит кода — это проверка исходного кода и всего, что вокруг него, с отчётом и рекомендациями. Результат — не оценка «хорошо / плохо», а список рисков с ценой их устранения.

Проблема

Ушёл подрядчик или разработчик

Решение

Новой команде нужно понять, что досталось в наследство, прежде чем брать проект на поддержку.

Проблема

Каждый релиз что-то ломает

Решение

Аудит показывает, где связность кода и отсутствие тестов делают любое изменение рискованным.

Проблема

Сайт или сервис тормозит

Решение

Находим узкие места в запросах к базе, коде и настройках сервера — с оценкой, что даст каждое исправление.

Проблема

Перед инвестициями или покупкой компании

Решение

Инвестору и покупателю нужна независимая оценка: сколько стоит технический долг и можно ли масштабировать продукт.

Проблема

Перед редизайном или крупной доработкой

Решение

Понять, что можно переиспользовать, а что проще переписать, до того как утверждён бюджет.

Проблема

Подозрение на уязвимости

Решение

Проверяем зависимости, доступы и типовые уязвимости из списка OWASP.

Что входит в услугу аудита кода

Восемь направлений проверки. Глубину по каждому выбираем под вашу задачу — можно проверить весь проект или только часть.

Архитектура

Как устроен проект, насколько части зависят друг от друга, выдержит ли он рост нагрузки и команды.

Качество кода

Читаемость, дублирование, соглашения, сложные места, которые боятся трогать. Code review ключевых модулей.

Безопасность

Статический анализ (SAST), проверка на типовые уязвимости, хранение паролей и ключей.

Зависимости

Устаревшие и уязвимые библиотеки, проверки вроде npm audit, лицензии.

Производительность

Медленные запросы к базе данных, утечки памяти, лишние вычисления, кеширование.

Тесты

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

Инфраструктура и CI/CD

Как код попадает на сервер, есть ли копии и мониторинг, кто имеет доступы.

Документация

Сможет ли новый разработчик разобраться в проекте без автора.

Виды аудита: качество, безопасность, архитектура

Слово «аудит» используют для разных работ. Разница — в вопросе, на который нужен ответ.

Аудит качества

Главный вопрос
Можно ли развивать код без боли?
Что смотрим
код, тесты, документацию
Инструменты
ручной code review, статический анализ
Когда нужен
смена подрядчика, перед доработкой

Аудит безопасности

Главный вопрос
Где дыры, через которые украдут данные?
Что смотрим
код, зависимости, доступы, настройки
Инструменты
SAST, DAST, проверка зависимостей
Когда нужен
персональные данные, платежи, после инцидента

Аудит архитектуры

Главный вопрос
Выдержит ли система рост?
Что смотрим
устройство системы, базы, связи сервисов
Инструменты
схемы, профилирование, нагрузочные тесты
Когда нужен
рост нагрузки, инвестиции, переписывание

Пентест

Главный вопрос
Можно ли взломать работающую систему снаружи?
Что смотрим
работающий продукт глазами атакующего
Инструменты
специальные инструменты взлома
Когда нужен
требования заказчика или регулятора

Чаще всего нужен комбинированный аудит: качество плюс ключевые проверки безопасности и архитектуры. Пентест — отдельная услуга специализированных компаний; подскажем, когда он нужен.

Страница технического отчёта: таблица рисков с цветными метками и столбцом оценки часов

Что вы получите: отчёт и план работ

Отчёт написан для двух читателей. Руководитель видит сводку на первой странице: общее состояние, главные риски и что они значат для бизнеса — деньги, сроки, вероятность аварии. Разработчик видит подробности: файл, проблему, как исправить.

Структура отчёта:

  • сводка для руководителя на одну страницу;
  • список находок с оценкой риска по светофору: красный — исправить сейчас, жёлтый — в ближайших планах, зелёный — при случае;
  • оценка в часах на исправление каждой находки;
  • план работ по приоритетам;
  • рекомендации по процессу: тесты, CI/CD, код-ревью.

Отчёт ваш: с ним можно идти к своей команде, другому подрядчику или к нам. Если найдены проблемы безопасности сайта, их можно закрыть отдельно — это аудит безопасности сайта с лечением. Проблемы сервера и выкладки решает инфраструктура и DevOps.

Сколько стоит аудит кода

Экспресс-аудит

ключевые модули, зависимости, главные риски, сводка для руководителя

по смете

Полный аудит

архитектура, качество, производительность, тесты, инфраструктура, план работ

по запросу

Полный аудит с безопасностью

всё из полного плюс SAST, DAST и проверка доступов

по смете

Цена зависит от объёма кода, числа сервисов и технологий, глубины проверки и того, есть ли документация. Точную сумму и срок называем после первого взгляда на репозиторий.

Этапы аудита кода

  1. 01

    Доступы и NDA

    Подписываем соглашение о конфиденциальности, получаем доступ к репозиторию и, если нужно, к тестовому стенду.

  2. 02

    Автоматический анализ

    Статический анализ, проверка зависимостей и уязвимостей, метрики сложности кода.

  3. 03

    Ручной разбор

    Разработчики читают ключевые модули, архитектуру и настройки. Именно здесь находятся самые дорогие проблемы.

  4. 04

    Отчёт и созвон

    Передаём отчёт и разбираем его на созвоне: что критично, что можно отложить, сколько стоит исправить.

Вопросы об аудите кода

Что такое аудит в программировании?
Это независимая проверка исходного кода, архитектуры и инфраструктуры проекта. Цель — найти риски: ошибки, уязвимости, узкие места, технический долг. На выходе — отчёт с приоритетами и оценкой, сколько стоит исправить каждую проблему.
Какие виды аудита существуют?
Аудит качества кода, аудит безопасности, аудит архитектуры и производительности. Отдельно стоит пентест — попытка взломать работающую систему снаружи. Часто их комбинируют под задачу.
Каковы 4 этапа аудита кода?
Доступы и соглашение о конфиденциальности, автоматический анализ, ручной разбор ключевых модулей, отчёт и созвон с разбором результатов.
Сколько стоит 1 час работы аудитора и сколько стоит весь аудит?
Мы считаем аудит проектом, а не часами: цена — по запросу и зависит от объёма кода, числа сервисов и глубины проверки. Точную сумму называем после первого взгляда на репозиторий.
Что такое аудит npm и проверяете ли вы зависимости?
npm audit — встроенная проверка библиотек JavaScript на известные уязвимости. Мы проверяем зависимости во всех частях проекта — JavaScript, Python, PHP — и отмечаем устаревшие и уязвимые версии и лицензии.
Что входит в аудит сайта с точки зрения кода?
Качество кода и шаблонов, CMS и модули, безопасность, скорость, работа с базой, настройки сервера. Если нужна проверка поисковой видимости — это отдельный SEO-аудит, его делает SEO-специалист.
Сколько стоит аудит безопасности сайта?
Аудит с проверками безопасности стоит дороже аудита качества: добавляются SAST, DAST и проверка доступов. Цену называем после оценки объёма проекта.
Что нужно предоставить для аудита?
Доступ к репозиторию с кодом, описание проекта и известных проблем, по возможности — доступ к тестовому стенду и документации. Чем больше контекста, тем точнее выводы.
Нужен ли доступ к рабочей базе данных?
Обычно нет: достаточно структуры базы и тестовых данных. Доступ к рабочей среде нужен, только если проверяем производительность на реальной нагрузке, — и только на чтение.
Можно ли проверить только часть проекта?
Да: например, только платёжный модуль, API или мобильное приложение. Тогда аудит быстрее и дешевле, но выводы касаются только проверенной части.
Поможете исправить найденное?
Да, если захотите: возьмём исправления в работу по плану из отчёта. Или отдайте отчёт своей команде — он написан так, чтобы им мог пользоваться любой разработчик.

Подрядчик ушёл и проект нужно подхватить? После аудита возьмём поддержку проекта или доработку по итогам аудита. Если технической части не хватает руководителя, поможет технический директор на аутсорсе. А если вопрос в поисковой видимости сайта, а не в коде, — вам нужен SEO-аудит сайта.

Обсудим ваш проект

Заявку читает руководитель проекта, а не колл-центр и не автоответчик.

Что будет после заявки

  1. Укажите удобный способ связи для обсуждения задачи.
  2. Созвонимся, чтобы понять задачу, цифры и ограничения.
  3. Предложим план: что сделать, в каком порядке, кто из команды подключится и сколько это стоит.

Заявка ни к чему не обязывает. Если задача окажется не нашей, скажем прямо и подскажем, куда обратиться.

Расскажите о задаче

Имени и телефона достаточно. Подробности можно добавить сразу или обсудить при звонке.

Добавить подробности