eFiction CMS 3.5.9.1: bezpečnostná aktualizácia staršieho PHP systému

Na mieru

11.11.2026 · @Jana Mičeková

Ako udržať starší softvér bezpečný a funkčný bez toho, aby ste museli zahodiť existujúcu databázu a začať odznova.

Staršie softvérové systémy majú jednu veľkú výhodu: roky plnia svoju úlohu a obsahujú dáta, funkcie a úpravy, ktoré ich používatelia potrebujú. Ich údržba je však čoraz náročnejšia, keď sa mení PHP, databázové technológie a bezpečnostné požiadavky.

Práve s takouto situáciou sme sa stretli pri open source projekte eFiction CMS – systéme na prevádzku archívov príbehov, ktorý vznikol v roku 2005 a dodnes beží na stovkách webov.

Od podpory komunity k vlastnej vývojovej vetve

Na eFiction CMS pracujeme od roku 2020. Pôvodne išlo o bezplatnú pomoc komunite používateľov, ktorí chceli naďalej prevádzkovať svoje existujúce archívy po tom, čo oficiálny vývoj v roku 2018 zastal.

Postupne sme narazili na problémy, ktoré sa drobnými opravami riešiť nedali. Starší kód potreboval úpravy pre PHP 7.4 a neskôr PHP 8, databázová schéma sa musela zmeniť kvôli dátumom a IPv6 adresám a bezpečnostné nedostatky si vyžadovali systematický prístup.

Vznikla tak samostatná vývojová línia eFiction 3.5.x. Jej cieľom bolo udržať existujúce inštalácie použiteľné bez straty dát a bez neuváženého prechodu na nekompatibilnú verziu.

Bezpečnosť nie je len otázkou aktualizácie PHP

V októbri 2026 sa po ôsmich rokoch nakoniec obnovil oficiálny vývoj eFiction a v priebehu troch týždňov vyšlo trinásť verzií, prevažne bezpečnostných. Ich opravy sa týkali spoločného základu, z ktorého vychádza aj naša vetva, no kvôli odlišnej databázovej schéme sa nedali prevziať priamo. Každú z nich sme preto porovnali s kódom našej línie a prispôsobili ju.

Vydania eFiction 3.5.9 a 3.5.9.1 obsahujú tieto opravy spolu s výsledkami vlastného auditu:

  • Ochrana používateľských účtov: heslá sa ukladajú pomocou bcrypt; existujúce MD5 hashe sa aktualizujú pri ďalšom prihlásení používateľa, takže nikto nestratí prístup.
  • Kontrola oprávnení: opravy zabránili neoprávneným zmenám cudzích účtov, recenzií, komentárov, príbehov, sérií a ďalšieho obsahu.
  • SQL injection: preverili sme 656 databázových dotazov pracujúcich s hodnotami z formulárov a adries a opravili 35 problematických miest vo vyhľadávaní, prehliadaní, používateľských funkciách aj administrácii.
  • Cross-site scripting (XSS): čistenie HTML obsahu sme prepísali tak, aby odstraňovalo nebezpečné atribúty a odkazy; už uložený obsah sa vyčistí počas aktualizácie.
  • Kompatibilita s novším PHP: opravili sme 164 miest, kde PHP 8.1 a novšie hlásili prácu s hodnotami null, a ďalšie chyby prevzaté z oficiálnych vydaní.
  • Inštalátor a doplnkové moduly: inštalátor odmieta spustenie na už nainštalovanom webe a dostal nový vzhľad; moduly storybanner, storyend a displayword prešli rovnakým auditom.

Pri audite sme našli aj chyby nad rámec oficiálnych opráv, vrátane možnosti získať administrátorské práva bežným účtom. Tie sme nahlásili pôvodnému vývojovému tímu.

Nešlo teda iba o to, aby aplikácia prestala zobrazovať upozornenia v novšom PHP. Cieľom bolo odstrániť konkrétne bezpečnostné nedostatky a zachovať funkčnosť existujúcich inštalácií.

Prečo nebolo možné jednoducho použiť oficiálnu aktualizáciu

Najväčšou komplikáciou bola odlišná databázová schéma.

Hoci obe vývojové línie vychádzajú z tej istej staršej verzie eFiction, naša vetva v minulosti zmenila spôsob ukladania dát. Dátumy sa ukladajú ako číselné časové značky namiesto databázového typu DATETIME, IP adresy využívajú binárne úložisko s podporou IPv4 aj IPv6 a nastavenia odosielania e-mailov obsahujú port a šifrovanie, ktoré oficiálna verzia nepozná.

Oficiálny kód predpokladá pôvodnú štruktúru databázy. Jeho nasadenie nad našu schému by znamenalo nesprávne zobrazované dátumy, zlyhávajúce ukladanie obsahu a nefunkčný log. Oficiálny aktualizačný mechanizmus navyše komunitné vetvy nepodporuje – pri nezhode súborov kód jednoducho nahradí.

S rovnakým problémom sa stretávame pri modernizácii komerčných aplikácií. Aktualizovať samotný kód nestačí, keď sa počas rokov zmenil aj spôsob, akým aplikácia pracuje s dátami. Pri takýchto systémoch treba poznať nielen aktuálny stav zdrojového kódu, ale aj históriu zmien, databázové závislosti a to, ako sa jednotlivé časti aplikácie v praxi používajú.

Stav vývojovej vetvy

V roku 2026 sme dokončili vydania eFiction 3.5.9 a 3.5.9.1. Obsahujú bezpečnostné opravy, opravy funkčnosti a úpravy potrebné na ďalšiu prevádzku tejto vetvy na PHP 7.4 až 8.2.

Keďže sa oficiálny vývoj eFiction obnovil a boli oznámené plány na eFiction 4, túto etapu ako firma uzatvárame. Vetva zostáva v komunitnej organizácii na GitHube, kde sa na opravách podieľa aj jeden z pôvodných vývojárov eFiction z roku 2005. Ďalšie opravy budú vznikať v rámci komunity.

Pre existujúce stránky, ktoré našu databázovú schému používajú, je k dispozícii repozitár s vydaniami, changelogom a evidenciou otvorených problémov: eFiction 3.5.x na GitHube.

Táto vetva je určená pre inštalácie, ktoré na nej už fungujú. Nie je náhradou oficiálnych aktualizácií pre stránky používajúce oficiálnu vetvu eFiction. Migračnú cestu na eFiction 4 bude možné posúdiť až po jeho vydaní.

Čo nám tento projekt priniesol

Práca na eFiction CMS je príkladom vývojárskej činnosti, pri ktorej nestačí poznať aktuálne technológie. Vyžaduje si orientáciu v historickom kóde, identifikáciu bezpečnostných rizík, pochopenie databázových závislostí a zmeny, ktoré zachovajú použiteľnosť systému. Presne tieto skúsenosti využívame pri zákazkovom vývoji, údržbe a modernizácii existujúcich aplikácií.

Pre nás je to zároveň prirodzený okamih na uzatvorenie jednej etapy a sústredenie kapacít na ďalšie projekty.

Potrebujete modernizovať staršiu PHP aplikáciu?

Ak prevádzkujete systém, ktorý funguje roky, ale jeho údržbu komplikuje starší kód, databázové závislosti alebo prechod na novšie PHP,  vieme vám pomôcť posúdiť jeho stav a možnosti ďalšieho rozvoja. Niekedy je najlepším riešením migrácia, inokedy dáva väčší zmysel existujúci systém zachovať a postupne ho bezpečne modernizovať.  Každý prípad je iný. 

Ďaľšie články

Vlastný realitný web alebo web ako služba?

Web pre realitku
JM Support Vlastný realitný web alebo web ako služba?
Vlastný realitný web alebo web ako služba? Túto otázku riešila snáď každá realitná kancelária, dokonca ajzabehnuté značky, keď skončili weby postavené na správcovskom systéme Realsoft.  Bez ohľadu na to, že…

Ako funguje galéria ponuky v Houzez

Houzez, Web pre realitku
JM Support Ako funguje galéria ponuky v Houzez
Základné informácie ku galérii ponuky v téme Houzez Pod galériou máme na mysli fotografie k ponuke, sú oddelené od prvého prezentačného obrázka (featured image). Kde je možné nájsť galériu? galéria…