Исходный код сайта для проведения аудита доступен по ссылке

https://www.dropbox.com/sh/mf3xsb9cnn11d50/AABy0_i9a_ERDbX6Ahs6tJbta?dl=0

Аудит Nginx+App кода сайта сделанного в Мануфактура Софт, город Воронеж

Nginx


  • Не используются ssl сертификаты (проблемы с безопасностью соединения + низкие позиции в ранжировании поисковиками)
  • Не используется сжатие запроса (gzip)
  • Много мусора (дубль параметры, параметры по умолчанию)
  • Часть настроек (относительно приложения) вероятно являются артефактами т.к, не выполняются / не используются

App:

В целом приложение написано грязно, конфиденциальные данные закоммичены в VCS (например, robotPassword в configs/application.ini)

(Например, AdminModel->searchByUser). Скорее всего это частично связано с некорректной схемой БД

  • Почти везде отсутствует стандартная документация входящих/исходящих параметров с помощью PHPDoc (или аналогичных)
  • Часть документации неконсистентная
  • Объявление переменных в разных стилях (underscore / camelCase)
  • Код грязный и написан в разных стилях - пробелы и отступы где как, комментарии не по делу. Вероятно не пользовались линтером.
  • В шаблон часто пробрасывается больше данных чем нужно, в некоторых местах хардкодом вычищаются (“чтобы не мозолили глаза в шаблонах”) (не специальной выборки для рендеринга)
  • ООП реализовано формально, Про наследование ничего не слышали, много однотипной дубль логики. Часть геттеров и сеттеров отсутствует. (Например,
  • GridcancelModel)
  • Работа с сфинксом - хардкод. Нет singleton’a соединения - создается каждый раз новое. Параметры подключения насыпаны прямо в коде (ArticleModel)
  • Код всего проекта не соответствует общепринятым стандартам PSR
  • Функции слишком раздутые (реализации >= 100 строк)
  • Работа с zend-db в некоторых местах расходится с рекомендациями и ограничениями офф. документации -> появление sql-инъекций и неоптималые выборки
  • Отсутствуют Unit, Acceptance тесты.
  • Нет нормальных скриптов автосборки (увидел часть для деплоя на прод, но это хардкод на коленке - пользоваться нормально невозможно)
  • Модель MVC размыта, логика во вьюхах намешана. Современный подход преполагает использование какого-либо шаблонизатора c пробрасыванимаем в него параметров для последующей отрисовки. Вызов функций из шаблонов - bad practice.
  • Отсутствует система для билда статики. (gulp, webpack, bower и т.п.)
  • Качество js widget’ов оставляет желать лучшего - практически невозможно переиспользовать.
  • Некорректная подгрузка шрифтов (должны подгружаться через font-face с 3 разными расширениями. нужно для того что максимальное количество браузеров смогло это поддерживать)
  • В верстке намешаны вендорские (или их кастомизация) и пользовательские стили -> поддерживать также крайне сложно.
  • Нет файла composer.lock