Все кто хоть как то хвалят ммовеб или деморт - говноеды априори. И говорить про якобы защищенный и проверенный ммовеб, да да верим, а откуда эти темы, если он проверен временем?
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
А я скажу больше, это [А по щам?] не то что дырявая, так ещё и уровень кода на уровне 2000 года, и те люди которые выкупили эту хуйню, не 1 разработчик не хочет этот ужас допиливать. Может посмотрим и сам код и публичной части код? А уже же была у нас тема подобная
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
А может посмотрим сам код в репозитории, а давайте. Нормально назвать репозиторий публичной части мы не можем, называем clinet, а не client.
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
Окей, давайте смотреть
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
. Про ооп, мы вообще не слышали, прописать общий класс, старт переменных и окружения, привести к нормальному виду а зачем? Конфигурация, автозагрузка, маршрутизация и обработка запросов происходит лишь в 1 файле, нарушающая все практики возможные.
Подавление ошибок, через оператор @, вместо нормальной обработки. Использование переменных напрямую из
$_SERVER
без предварительной обработки, как в случае
$_SERVER[HEADER_IP]
, может привести к уязвимостям. И помимо этого, считается хорошим тоном обрабатывать отдельным классом всё это и работать через него со всеми глобальными заголовками для реквестов, вы посмотрите те же фреймворки и для чего они всё это делают и реализовывают. Отсутствует нормальная реализация автозагрузчика, хотя с 2012 года существует composer. Постоянное использованиt функций без импорта их или псевдонимов, хорошей практикой является use или через \,
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
потому что это работает быстрее и мы получаем прирост в производительности, но мы видим грубое нарушение без использования всего этого
file_exists
,
array_slice
,
strtolower
,
in_array
,
class_exists
,
method_exists
.
Ну давайте пойдём дальше
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
и мы видим одно и тоже нарушение правил, нарушение стандартов и повторы кода. Хотя зачем нам настроить 1 раз пространство и инициализировать те же переменные?
PHP:
define( "ROOT_DIR", dirname( __FILE__ ) );
ini_set('display_errors', 1);
error_reporting(E_ALL & ~E_NOTICE);
Вот это да прикиньте, стартует просто среда и фреймворк и работают уже конкретно в ней, каждые делают по разному и для каких то специфичных случаев уже переопределяют переменную в самой функции из-за времени выполнения или ещё чего то специфичного крайне. Но не вот так. Помимо этого, вся логика с базой данных, конфигурацией и состоянием установкой, просто смешана, и раз у нас финальный продукт, то пользователь видит все ошибки, кроме E_NOTICE,
error_reporting(E_ALL & ~E_NOTICE);//
Мы выполняем, commit, но никак не открываем транзакции и зачем они там, это не понятно, а соответственно это может привести к ошибкам:
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
Подерганные из разных кусков хелперы, не понятно к чему, а зачем? Почему не привести это в классах как у всех нормальных людей
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
А может посмотрим как это сделано у других?
Как и для всего есть свои классы и вызываются их функции, а не вот так.
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
Что это такое? Нормальный планировщик задач сложно реализовать и написать, что за 3.14здец. Давайте посмотрим контроллеры?
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
Код перегружен, в коде многочисленно используются данные из глобальных массивов
$_POST
и
$_GET
напрямую, что повышает риски связанные с XSS и CSRF атаками. Валидации и санитизации данных нету, вообще и всё так же не работаем через класс для реквестов, который бы имел все эти обработки. Вы посмотрите вот например
L2PTS Register Example, где и инпуты и не только всё валидируется и какой опрятный код:
И на тот 3.14здец.
Так вернёмся к нашим баранам и глянем и в методе item() используется
$_GET['sid']
и
$_GET['id']
без должной проверки на тип данных, что потенциально может привести к SQL-инъекциям или логическим ошибкам.
В методах, таких как
gateway()
, используется
exit()
для вывода ошибок. Не исключения, не стандартизированный обработчик ошибок ничего.
Многие методы класса делают схожие вещи, например, выводят ошибки через XMLFormatter. Это можно вынести в отдельный приватный метод, чтобы избежать дублирования кода. И избежать нарушения принципа DRY.
В методах, где происходит сериализация и десериализация (shop(), config() и другие), рекомендуется проверять результат десериализации перед использованием данных. Но зачем?
И всё так же использования подавления ошибок в виде @.
Идём дальше
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
.
Логика смешена [А по щам?], тут и авторизация с регистрацией и потом обработка платежей и ещё что то. Извините, что это за 3.14здец? Ну давайте тогда и выше контроллер смешаем и вообще всё писать в 1 контроллере, а потом, когда кто то это будет рефакторить и переделывать, захлёбывался в говне.
Всё так же проблема с глобальными переменными и возможными уязвимостями, где не раз указано уже было.
Жесткая связь с глобальными функциями, методы, такие как
get_instance()
и
get_lang()
, указывают на сильную связь с глобальным состоянием.
Отсутствие обработки исключений.
Нарушение DRY.
Хардкод значений и ключей, прямое использование IP-адресов, ключей, и других значений, хотя для этого используются либо параметры среды или конфигурация. Но всем похуй.
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
И тут у нас начинается полный 3.14здец всё так же.
- Всё так же использование подавления ошибок через @
- Проверка
if (!isset($_SESSION))
не является надежным способом проверки статуса сессии, поскольку $_SESSION
может быть установлен без активной сессии.
- В методе
index()
происходит множественная вложенность условий, что делает код трудночитаемым. Всё так же
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
, давайте почитаем и что нам там говорят Avoid nesting too deeply and return early (part 1).
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
Причем это и от sonarqube и не только говорится, говорилось и будет говорится. Если в кратце весь проект этот, он в виде говнокода и как не надо делать показатель.
- Отсутствует использование
htmlspecialchars
, для безопасности, но похуй нам
- В методе
txt()
прямое включение пути из переменной $_GET
в file_exists
может привести к уязвимостям, если данные не проверяются должным образом.
Идём дальше
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
- Здесь мы делаем всё что только можно и нельзя, от проверки статуса сайта до рендеринга страниц.
- Происходит много логики с проверкой состояний и редиректами. Для редиректов, состояний и не только всё это не плохо было бы вынести в мидлевари или отдельные компоненты, но т.к мидлеварей у нас нету и реализации данного слоя для http, то только компоненты
- Использование
die
после редиректа в конструкторе
- Отсутствие кэширование результатов, что замедляет выполнение кода для работы с файлами
- Метод
site_reconstruction
имеет всё так же жесткую проверку на конфигурацию и редиректы, без использования компонентов/мидлеварей
- Прямые вызовы header и die
И идём дальше
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
.
- Всё так же смешанная логика
- Нарушение DRY
- Прямое использование суперглобальных переменных
- Использование header для редиректа без абстракции
- Старт сессии с подавлением ошибок
- В методе
admin()
используется прямое сравнение с ADMIN_LOGIN
и ADMIN_PASSWORD
. Лучше использовать хеширование и более безопасные методы аутентификации. И тут мы узнаем, что оказывается все ваши пароли хранятся в открытом виде у деморт. Поздравляю долбоёбов
Помимо этого используется медленный шаблонизатор, никому не нужный, какие то костыли.
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
Хотя для кого сделано, не понятно. И это лишь малая часть всего этого кода, я лишь прошёлся по верхам не говоря уже о других элементах и всему коду в этом виде, а там поверьте будет всё ещё хуже. Да и полный код ревью и разборы я не собираюсь делать.
Теперь по поводу сферы, да есть огрехи, есть костыли и тупая логика с синтаксическим сахаром, но это лучшее предложение, что есть сейчас и при этом абсолютно бесплатно для вас. Причём это самое простое и элементарное было при взгляде на роутинг лишь
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
. Да есть проблемы, да какое то самопольное и не нужное говно. Да не умение конвертировать изображения в webp и требования изображений в webp, из-за бзика какого то разраба, хотя только вот сейчас начали переходить все браузеры на поддержку. Какой то кастрированный роутинг, работа с почтой, каптчей и не только кринж, но это всё развивается. Но из плюсов, как минимум один из быстрых шаблонизаторов для php. Постоянно обновляются и исправляются ошибки и это всё хранится у ВАС, а не у дяди и открытие доступа к бд не требуется от вас для кого то, кто может спокойно управлять вашим серверов, вашими данными и делать запросы к бд при доступе. Кодовая база сферы в 10 раз лучше чем у деморт, ещё бы нормальную абстракцию для контроллеров, роутинг завезти, мидлвари, обработку скриптов и будет прям хорошо. Для бд какую нибудь orm, даже микро, нормальную инсталляцию, но вы учтите ситуации в стране человека, что он работает и делает 1 и при этом, ну это делается не десятилетиями, а лишь малый кусок времени для всего этого.