4.8 KiB
4.8 KiB
Quality Risks
Wygenerowano: 2026-05-20 ($paul-map-codebase, mode: full)
Quality Radar tools: codebase-memory-mcp ok; jscpd i ast-grep disabled by policy (.paul/config.md) — bez skanu duplikatow ani skanu strukturalnego.
Krytyczne ryzyka bezpieczenstwa
- Poswiadczenia bazy danych w repo (PLAINTEXT):
core/config/Strona/db.config.phpzawieraprodPassjako stala PHP (define('prodPass', 'Df61Xz21')). Analogicznie inne plikicore/config/<Site>/db.config.php. Po naprawie 2026-05-20core/config/Admin/db.config.phpzawiera te same poswiadczenia coStrona. Rekomendacja: przeniesc do zmiennych srodowiskowych / pliku poza repo i zrotowac haslo, bo jest publicznie widoczne w historii git. - Plik
info.phpw roocie aplikacji: typowo zawieraphpinfo()— ujawnia konfiguracje srodowiska. Rekomendacja: usunac lub ograniczyc dostepem (.htaccess/.htpasswd). .htpasswdw katalogu glownym aplikacji: powinien byc poza document root lub przynajmniej chroniony przez.htaccess(sprawdzic, ze nie jest serwowany).- Standalone skrypty archiwizacyjne (
pack.php,tar.php,zip.php,_unpack.php,makl.php): dostepne przez HTTP, omijaja FrontController. Wymagaja audytu autoryzacji i sciezek (path traversal). - CKEditor fileman PHP backend:
Admin/plugins/ckeditor/plugins/fileman/php/*.php— wewnetrzny upload/move/delete dirs. Sprawdzic, ze jest chroniony przez sesje admina.
Duplikaty i rownolegle warianty (kandydaci na konsolidacje)
Wykryto bez jscpd, na podstawie nazw / struktury:
core/lib/Smarty/vscore/lib/_Smarty/vscore/lib/Smarty3/— trzy rownolegle kopie Smarty. Aktywnie ladowany Smarty3 (core/core.php:121); pozostale to dead code.- W obrebie kazdej kopii rownolegla wersja plikow z sufiksem
_1(np.core/lib/Smarty/Smarty.class.phpicore/lib/Smarty/Smarty.class_1.php, plus identycznie wcore/lib/Smarty/internals/). Admin/plugins/ckeditor/vsAdmin/plugins/ckeditor_/— dwie pelne instalacje CKEditor.Admin/controller/SimpleArticle/IndexController.phpvsAdmin/controller/SimpleArticle_/IndexController.php— duplikat kontrolera.Admin/controller/StructureController.phpvsAdmin/controller/StructureController.php_— backup w repo.core/class/MainController.class.php.bak,core/class/Router.class.php.bak— backupy klas core.template/index.tplvstemplate/index.tpl.bakvstemplate/index_good.tpl— trzy warianty glownego szablonu; trudno powiedziec, ktory jest kanoniczny.core/config/Log4PHPConfig.xml,Log4PHPConfig.xml.test,Log4PHPConfig-admin.xml,Log4PHPConfig-admin.xml.delete,Log4PHPConfig-strona.xml,Log4PHPConfig-strona.xml.delete— chaos plikow konfiguracji loggera.
Hardkodowane wartosci
Admin/index.php:33-36— twardo zakodowaneidstruktur galerii klienta dla jezykow (18/52/30/40). Zmiana w bazie wymaga edycji kodu.core/core.php:97—setlocale(LC_TIME, 'pl_PL', 'pl', 'Polish_Poland.28592')zakodowane na sztywno.core/core.php:133—cache_lifetime = 60na sztywno.routes.php— adresy URL w wielu wariantach jezykowych zakodowane statycznie (np.mapa_serwisu,site_map,wyszukaj,search).core/config/Strona/db.config.php:13— host bazymysql8zakodowany.
Spojnosc i konwencje
- Mieszanie prefiksow modeli
Mf*iFk*bez jednoznacznej polityki domenowej. - Routes admin sa wewnatrz
Admin/index.php(mieszane z bootstrap), public sa wroutes.php— niespojnosc. - W kodzie wystepuja zakomentowane sekcje (
//$logger = LoggerManager::...,//$captchaStatus = true;) — pozostalosci po starszych iteracjach.
Mozliwe podejrzane konstrukcje
Core::LoadClass()(core/core.php:173) uzywapreg_match_allna nazwie klasy i konstruuje sciezki z_->/. Wyjatki w nazewnictwie moga prowadzic do nieskonczonych falli-przez (includenie istniejacych plikow w try/else).SelfUrl()(core/core.php:305-310) zawiera nietrywialne warunki dotyczace HTTPS i portu — pasie na refactor / wykorzystanie wbudowanej funkcji.
Spojnosc backend/frontend
- Brak jednoznacznego API contract — kontrolery zwracaja HTML przez Smarty +
AjaxForm/AjaxMapsList/AjaxRegisterCaptchaCheckzwracaja prawdopodobnie JSON/HTML czesciowy. Wymaga inwentaryzacji przy zmianach formularzy.
Akceptowane / odlozone
- Brak menedzera zaleznosci (
composer) — projekt historyczny, modernizacja poza zakresem zwyklych zadan. - Brak testow automatycznych — patrz
testing.md.
Co odblokuje glebsza analiza
- Wlaczenie
jscpdw.paul/config.md(quality_radar.tools.jscpd: true) dla potwierdzenia duplikatow kodu po liniach. - Wlaczenie
ast-grepdla wykrycia podejrzanych konstrukcji (np. SQL inline,eval,extract,mysql_*legacy). - Zrzut DDL bazy (
mysqldump --no-data) jako referencja schematu.