Úvodom mi dovoľte venovať sa najmä Drupalu, ktorý poznám najlepšie. Celá téma je ako reťaz, má viac navzájom súvisiacich ohniviek a treba sa venovať každému z nich.

Open-source vs. vlastné CMS

O výhodách používania open-source sa popísalo veľa. Je to filozofická otázka prístupu k projektom aj ku klientovi. Ísť do vlastného CMS považujem v dnešnej dobe pri riešení štandartných problémov za určité riziko (bezpečnosť, efektívnosť vývoja). Jednak si vytvárate určitú závislosť na dodávateľovi (tzv. vendor locking) a taktiež je tu možnosť vytvorenia ťažko odhaliteľnej chyby (tzv. security through obscurity). Pri niekoľkých desiatkach inštalácií webstránky by to bola skôr náhoda alebo veľký amaterizmus.

Veľké CMS sú na tom s bezpečnosťou vačšinou rádovo inde. Pri státisícoch projektov je každé riziko problém veľkého počtu ľudí. Veľa inštalácií znamená veľa testovaní a zároveň veľa pokusov o zlomenie systému. Tlaky na vyriešenie bezpečnostných problémov v nich sú preto obrovské.

Najlepšie je, že pri open-source sa problém skôr či neskôr vyrieši “sám” (viď ďalší odstavec).

Bezpečnosť jadra CMS

Našťastie najväčšie open-source (WordPress, Drupal, Joomla, TYPO3) po rokoch vývoja priplávali do relatívne bezpečných vôd a ich jadrá sú pri dodržaní základných pravidiel pomerne v poriadku. Majú zriadené bezpečnostné tímy a procesy, pomocou ktorých sa dajú problémy reportovať a tiež riešiť (Drupal, WordPress). Niekoľko krát do roka vychádza bezpečnostná aktualizácia, ktorú netreba ignorovať. V minulosti sa stalo, že aj hlavné verzie mali principiálny problém a niekoľko mesiacov bol web úplne otvorený (SQL injection).

Najčastejšie problémy webstránok platia všeobecne:

  • SQL Injection – databázové dopyty posielané z používateľského vstupu
  • Cross Site Scripting (XSS) –  upravený výstup do prehliadača cez modifikovanú URL (napríklad cez jQuery, WYSIWYG)
  • Cross Site Request Forgery (CSRF) – odosielanie príkazov napr. cez adresy obrázkov, vstupov z formulárov a podobne

Tieto kritické miesta majú oba systémy už za sebou. Minimálne v okruhu Drupalistov (WP neviem) sa téma bezpečnosti riešila na každom stretnutí komunity – konferencii, DrupalCampe, DrupalCone a musím povedať, chvála Bohu! Aj vďaka tomu môžeme lepšie spávať.

Napríklad pri WordPresse sa aktualizácia pluginov deje pár klikmi. Pri security update jadra vám v ideálnom prípade príde mail o úspešnom upgrade systému.

Pri Drupale treba mať zapnutý modul “update manager”,  aby vám chodili notifikácie o potrebe aktualizácie. Update si urobíte manuálne (FTP, drush), alebo vám príde bezpečnostný newsletter.

Bezpečnosť externých modulov a knižníc

Všetky CMS ponúkajú tisíce voľných alebo spoplatnených modulov a pluginov. Aj ich nesprávna voľba môže vážne narušiť bezpečnosť celej stránky. Mnohé z nich používajú navyše externé knižnice, ktoré môžu obsahovať škodlivý kód.

Systémy majú zadefinované „best practices“ pre vývojára modulov, ktoré sú podmienkou pri schvaľovaní kódu. Samotné schvaľovanie nie je jednoduché a trvá dlho. Z časti pomôžu automatické validátory kódu, ktoré odhalia základné chyby (syntax, formát, bezpečnosť), ale finálny krok je na komunite vývojárov. Pre správny vývoj modulov si prečítajte – Drupal coding standards , WordPress best practices , Joomla Best Practices, TYPO3 guidlines.

Napr. Drupal má prepracovaný postup vytvárania modulov.

Zaujímavý je koncept vzájomného schvaľovania modulov – Bonus Program,  je to systém kontroly, kde ak ja skontrolujem minimálne 3 ďalšie projekty a minimálne traja iní skontrolujú môj projekt, proces sa tak urýchli a skvalitní. Celkom potešujúci je aj projekt Pareview.sh, kde sa dajú kontrolovať a testovať celé repozitáre v sandboxe.

Je správne a vyžadované nahrávať externé knižnice (javascript, php) do špeciálneho adresára “libraries”, ktorý je určený len na čítanie.

Chybná konfigurácia CMS

Toto je veľký problém administrátorov webstránok a veľká bezpečnostná diera.

Všetci klikači, občasní implementátori sypte popol na hlavu. Triviálne hesla pre klientov (veď si ich neskôr zmenia), benevolentné nastavenie právomocí v rámci redakčného systému, chýbajúca antispam / boot ochrana, nesprávne nastavenie práva na zápis do adresárov, možnosť čítania settings / config súboru s prístupom do databázy – to sú tie najväčšie chyby, ktoré vás, skôr, či neskôr dobehnú.

Drupal má hneď niekoľko pomôcok. Priamo v kontrole stavu Drupal inštalácie vám vyskočia hlavné problémy (napr. vyššie spomenuté write permissions). Komu to nestačí – môže použiť moduly Security review alebo Hacked na hlbšiu kontrolu zabezpečenia webu. Aj v rámci Drupalu existujú platené služby a DropGuard je jednou z nich, ktorá udržuje váš web v dobrej kondícii.

WordPress má na to tiež modul WP Security Scan alebo platené služby. V tomto ohľade musím pochváliť server administrátorov WebSupportu, ktorý pripravili pre svojich klientov WebScanner, ktorý funguje celkom spoľahlivo. Predpokladám, že chceli uľahčiť život klientom ale hlavne sebe : )

Asi ste zažili zdesený telefonát od klienta, že mu WebSupport posielam mail, že má napadnutú stránku. Toto funguje.

Najväčším problém – aktualizácia

Pre klientov:  Vrelo odporúčam dohodnúť sa s dodávateľom po odovzdaní projektu, nech sa vám o web naďalej stará. Tých „pár eur“ mesačne zvládnete. Rozhodne to vyváži možné riziko.

Pre dodávateľov: Vrelo odporúčam dohodnúť sa s klientom, že mu za „pár eur“ budete webstránku pravidelne aktualizovať, vyhnete sa tak veľkej blamáži.

Asi ste zaregistrovali kauzu posledných týždňov – Panama papers, obrovský únik tajných informácií a dokumentov z daňového raja. Mohli za to vraj okrem Putina neaktualizované verzie WordPressu a Drupalu. Miliónová firma si nevedela zabezpečiť aktualizácie za „pár eur“. Ak to aj bolo inak, je to výstraha pre všetkých.

Viac o téme:

Tipy a triky na záver

Existuje zopár rád, ktorými sa odporúčam držať, okrem vyššie spomenutého.

Dôležitá je voľba dôveryhodného modulu – pluginu. Treba sa orientovať podľa počtu stiahnutí, hodnoteniu, frekvencie aktualizácií, prípadne zoznam a riešenie chýb.

Ak to CMS podporuje, je dobré nepoužívať predvolené nastavenia. Napríklad Drupal ukladá nahrané obrázky a prílohy do adresára “sites/default/files”, ale ľahko ich môžete umiestniť hocikde inde. Podobne to je s adresárom “private”, kde sa ukladajú privátne prílohy, môžete ho nazvať a umiestniť hocikde inde.

Odporúčam si prejsť aj tieto typy na udržanie Drupalu v kondícii, vrátane infografiky update cykloch.

Bezpečnosť open-source redakčných systémov je otvorená téma. Ak sa teda obávate ako klient alebo programátor používať open-source redakčné systémy, nie je sa čoho obávať pri dodržaní bezpečnostných pokynov.
Posolstvo na záver: Aktualizujte!

[mc4wp_form]

Komentáre