Prejsť na obsah

Nastavenia súborov cookie

Vyberte, aké druhy súborov cookie povolíte. Svoj výber môžete kedykoľvek zmeniť cez Nastavenia súborov cookie v dolnej časti každej stránky. Vyhlásenie o ochrane osobných údajov

Nevyhnutné

Vždy zapnuté

Potrebné na prihlásenie, uchovanie košíka a zapamätanie vašich volieb. Sú vždy zapnuté.

Ktoré súbory cookie?
  • weboke_sessie, weboke_klant, weboke_remember: vaša relácia a trvalé prihlásenie
  • weboke_basket: váš košík
  • wkBtwIncl: zobrazovanie cien s DPH alebo bez DPH
  • wok_cookies: váš výber súborov cookie, 12 mesiacov

Merajú, ktorá reklama vedie k návšteve alebo objednávke, aby sme neplatili za reklamy, ktoré nič neprinášajú.

Ktoré súbory cookie?
  • Google Ads cez Google Tag Manager (_gcl_au, _gcl_aw), najviac 90 dní
  • OpenAI Ads, reklamy v ChatGPT
  • wok_aff: ktorý partner vás k nám odporučil (partnerský program), 60 dní

4,6

Krajina a jazyk

Každá krajina má vlastný web s cenami a DPH danej krajiny.

Zobraziť

Zabezpečenie stránky: oprávnenia, hlavičky a bezpečnostné pluginy

Modul 7: Zabezpečenie · Čas čítania: 10 minút

Cieľ lekcie: Po tejto lekcii dokážete zabezpečiť WordPress stránku pomocou oprávnení, nastavení a bezpečnostných hlavičiek a vedieť reálne zhodnotiť prínos bezpečnostných pluginov.

Kľúčové pojmy: zabezpečenie (hardening), oprávnenia súborov (644, 755), DISALLOW_FILE_EDIT, žiadne PHP v uploads, zoznam súborov priečinka, skrytie verzie, X-Powered-By, bezpečnostné hlavičky, záložné súbory a .git vo webovom priečinku, WAF na serveri, WAF v pluginu, malvérový skener

Čo je zabezpečenie (hardening)

Zabezpečenie (hardening) znamená: nastaviť stránku tak, aby chyba alebo únik spôsobili čo najmenšiu škodu. Nenahrádza to aktualizácie a silné heslá (lekcia 7.2 a 7.3), ale zmenšuje to následky. Predstavte si dom: aktualizácie sú zámky, zabezpečenie je zariadenie, vďaka ktorému sa votrelec, aj keď sa dostane dnu, nedostane k trezoru.

Oprávnenia súborov

Každý súbor a priečinok na serveri má oprávnenia: kto smie čítať, zapisovať a spúšťať. Zapisujú sa ako tri číslice, pre vlastníka, skupinu a ostatný svet. Odporúčanie z dokumentácie WordPressu:

ČoOprávneniaVýznam
Priečinky755Vlastník môže všetko, ostatní môžu čítať a otvárať
Súbory644Vlastník môže čítať a zapisovať, ostatní len čítať
wp-config.phpprísnejšie, napríklad 600 alebo 640Čítať smie len vlastník (prípadne aj skupina webového servera)

Ktorá hodnota pre wp-config.php funguje, závisí od toho, ako váš hosting spúšťa PHP: pri väčšine zdieľaného hostingu beží PHP pod vaším vlastným užívateľským účtom, a vtedy stačí 600. Vyskúšajte to a overte, či stránka ešte funguje.

Nikdy 777. To znamená: zapisovať smie ktokoľvek na serveri. Návod, ktorý hovorí „nastavte priečinok na 777, ak nahrávanie nefunguje“, rieši problém nesprávne. Pri kvalitnom hostingu to navyše nikdy nie je potrebné.

Nastavenia v wp-config.php

Niekoľko riadkov, ktoré veľa zmenia (pred riadkom „to je všetko, viac už neupravujte“):

// Zákaz úprav súborov z administrácie (Vzhľad > Editor tém a Pluginy > Editor pluginov).
define( 'DISALLOW_FILE_EDIT', true );

// Chybové hlásenia nikdy nezobrazovať návštevníkom (lekcia 5.4).
define( 'WP_DEBUG', false );

Pomocou DISALLOW_FILE_EDIT zmizne editor, cez ktorý je možné v administrácii upravovať PHP súbory tém a pluginov. Votrelec, ktorý prevezme kontrolu nad účtom administrátora, tak nemôže na dva kliknutia vložiť škodlivý kód do vašej témy. Inštalovanie pluginov je stále možné; ak chcete zakázať aj to (napríklad pri stránke, ktorú spravujete pre klienta), existuje DISALLOW_FILE_MODS, no vtedy prestanú fungovať aj aktualizácie cez administráciu.

Žiadne PHP v uploads, žiadny zoznam priečinka

V priečinku wp-content/uploads majú byť obrázky a dokumenty, nikdy nie PHP súbory. Votrelci, ktorí dokážu cez nejakú chybu nahrať súbor, sa práve snažia umiestniť tam PHP súbor a následne ho vyvolať. Zablokujte to pomocou .htaccess v priečinku uploads (pri LiteSpeed a Apache):

<Files *.php>
Require all denied
</Files>

Vypnite tiež zobrazovanie obsahu priečinkov. Bez index.php alebo index.html v priečinku niektoré webové servery zobrazia zoznam všetkých súborov („Index of /wp-content/uploads/2026/11“). To je výklad pre niekoho, kto hľadá zálohy alebo citlivé dokumenty. V .htaccess vášho webového priečinka:

Options -Indexes

Mnohí hostingoví poskytovatelia majú toto predvolene vypnuté. Úloha tejto lekcie to overí.

Žiadne zvyšky vo webovom priečinku

Všetko vo webovom priečinku je dostupné cez web, okrem toho, čo server spracuje ako PHP alebo zablokuje. Nebezpečné sú:

  • kópie wp-config.php (wp-config.php.bak, wp-config.old, wp-config.php~ z textového editora): tie obsahujú heslo k databáze a odošlú sa ako obyčajný text (lekcia 1.3);
  • zálohy ako backup.zip, site.tar.gz alebo database.sql vo webovom priečinku;
  • priečinok .git od vývojára, pomocou ktorého si môže niekto stiahnuť celý váš kód (a niekedy aj heslá);
  • debug.log v priečinku wp-content (lekcia 5.4);
  • staré inštalačné alebo testovacie súbory, ako je info.php s phpinfo().

Zálohy uchovávajte mimo webového priečinka alebo mimo servera a zvyšky priebežne odstraňujte.

Skrytie verzie: malý prínos

WordPress štandardne vkladá do HTML:

<meta name="generator" content="WordPress 7.1.4" />

a to isté do RSS kanála. Aj PHP sa niekedy prihlási v hlavičke: X-Powered-By: PHP/8.3.14. Skrytie toho je rozumný krok, no neočakávajte od neho priveľa: útočné programy jednoducho skúšajú zraniteľnosti bez ohľadu na zobrazenú verziu a verzie sa často dajú odvodiť aj z ?ver= za skriptami. Skrytie je upratovanie, nie zabezpečenie. Stránka, ktorá skrýva verziu, no neaktualizuje sa, je rovnako zraniteľná.

Spravíte to takto, vo vlastnom malom pluginu alebo v functions.php vašej podradenej témy (child theme):

remove_action( 'wp_head', 'wp_generator' );
add_filter( 'the_generator', '__return_empty_string' );

A PHP hlavičku pomocou expose_php = Off v nastaveniach PHP u vášho hostingového poskytovateľa (pri DirectAdmin v časti Select PHP version, Options), alebo pomocou Header unset X-Powered-By v .htaccess.

Bezpečnostné hlavičky

Pomocou niekoľkých hlavičiek poviete prehliadaču, ako sa má k vašej stránke správať. Najdôležitejšie z nich:

HlavičkaČo robí
Strict-Transport-SecurityLen cez https (lekcia 3.1)
X-Content-Type-Options: nosniffPrehliadač neháda, o aký typ súboru ide; zabraňuje, aby bol nahraný „obrázok“ spustený ako skript
X-Frame-Options: SAMEORIGIN alebo Content-Security-Policy: frame-ancestors 'self'Iné stránky nesmú zobraziť vašu stránku vo frame; zabraňuje clickjackingu (neviditeľné tlačidlo vašej stránky skryté pod tlačidlom inej stránky)
Referrer-Policy: strict-origin-when-cross-originPri kliknutí na odkaz na inú stránku sa odošle len vaša doména, nie celá adresa
Permissions-PolicyVypína funkcie prehliadača, ktoré vaša stránka nepoužíva (kamera, mikrofón, poloha)
Content-Security-PolicyPresne určuje, z akých zdrojov smú pochádzať skripty a štýly. Je to účinné, no náročné na správne nastavenie pri WordPresse a pluginoch; začnite v režime Report-Only

V .htaccess (pri LiteSpeed a Apache):

<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
</IfModule>

Potom otestujte, či všetko funguje: vložený obsah, tlačidlá na platbu, chatový widget. Externé nástroje ako securityheaders.com a internet.nl ukážu, čo vaša stránka naozaj odosiela.

Bezpečnostné pluginy, úprimne zhodnotené

Existuje mnoho bezpečnostných pluginov (napríklad Wordfence, Solid Security, All-In-One Security, Sucuri). Často v sebe spájajú: firewall, malvérový skener, ochranu prihlásenia, dvojfaktorové overenie, upozornenia a zoznam opatrení na zabezpečenie. Užitočné, no s obmedzeniami:

  • Firewall v pluginu (WAF) sa spustí až keď beží PHP. Škodlivá požiadavka musí najprv prejsť cez webový server a PHP, až potom ju plugin uvidí. Chybu v PHP súbore, ktorý sa volá priamo, alebo útok, ktorý výrazne zaťaží samotné PHP, nemusí vždy zastaviť. Firewall na serveri (napríklad ModSecurity, Imunify360 alebo firewall vášho hostingového poskytovateľa) sa nachádza skôr v reťazci a zastaví viac, bez toho, aby výpočty zaťažovali váš plugin. Spýtajte sa svojho hostingového poskytovateľa, čo beží na serveri.
  • Skener nájde problém až dodatočne. Malvérový skener vám povie, že niečo nie je v poriadku. To je cenné, no nič to nepredchádza. A skener na rovnakom serveri ako napadnutá stránka môže byť sám upravený útočníkom.
  • Nenahrádzajú aktualizácie. Plugin so známou zraniteľnosťou zostáva zraniteľný, aj keď vedľa neho beží bezpečnostný plugin. Niektoré bezpečnostné služby ponúkajú „virtuálne záplaty“, ktoré zastavia známe útoky, kým neaktualizujete; užitočné ako preklenutie, nie ako náhrada.
  • Sú samy osebe pluginom. Viac kódu, viac vecí na aktualizovanie, niekedy aj vlastná chyba. A dva bezpečnostné pluginy naraz si často odporujú.
  • Stoja výpočtový výkon, najmä skenery, ktoré bežia na vlastnom serveri.

Rozumná voľba: najprv zistite, čo už robí váš hostingový poskytovateľ (firewall, kontrola malvéru, blokovanie pokusov o prihlásenie). Doplňte to, čo chýba, zvyčajne dvojfaktorové overenie a obmedzenie počtu pokusov o prihlásenie. Rozsiahly bezpečnostný plugin je najprospešnejší pri hostingu, ktorý sám robí len málo.

Zhrnutie

  • Zabezpečenie (hardening) obmedzuje škodu z chyby alebo úniku; nenahrádza aktualizácie a heslá.
  • Priečinky 755, súbory 644, wp-config.php prísnejšie; nikdy 777.
  • Zapnite DISALLOW_FILE_EDIT, zablokujte PHP v uploads, vypnite zoznamy priečinkov a odstráňte zálohy, .git a debug.log z webového priečinka.
  • Skrytie verzie je upratovanie, nie zabezpečenie; bezpečnostné hlavičky pomáhajú prehliadaču chrániť vašich návštevníkov.
  • Firewall na serveri zastaví viac než plugin; bezpečnostné pluginy sú doplnok, nie náhrada.

Kvíz

1. Návod hovorí: „nastavte wp-content na 777, ak nahrávanie nefunguje.“ Čo si o tom myslíte?



2. Čo robí DISALLOW_FILE_EDIT?



3. Prečo je firewall na serveri skôr v reťazci než firewall v pluginu?



4. Odstránili ste generator tag. Je vaša stránka teraz chránená pred zraniteľnosťami v starých verziách?



5. Ktorá hlavička zabraňuje tomu, aby iná stránka načítala vašu stránku v neviditeľnom frame?



Úloha

Úloha A7.4: Čo vaša stránka ukazuje všetkým? Zadajte adresu svojej stránky. Program načíta domovskú stránku a RSS kanál (/feed/) a overí: neobsahuje generator tag v HTML ani vo feede verziu WordPressu, nezobrazuje hlavička X-Powered-By verziu PHP a odosiela vaša stránka X-Content-Type-Options: nosniff, ochranu proti frame (X-Frame-Options alebo frame-ancestors) a Referrer-Policy? Ak chýba HSTS (lekcia 3.1) a Permissions-Policy, nevadí (oranžová).

Úloha A7.4: Čo vaša stránka ukazuje všetkým?


Čo vyplníte a čo nájdeme, neukladáme. Váš prehliadač si pamätá vaše odpovede a to, či ste úlohu splnili. Po prihlásení si v sekcii Moje kurzy uchovávame iba to, že úloha bola (takmer) správne vyriešená; aj to tam môžete odstrániť.

Úloha A7.4b: Žiadne zvyšky vo webovom priečinku. Dokážte, že ide o vašu vlastnú stránku (TXT záznam alebo súbor s kódom úlohy). Program následne overí krátky pevný zoznam: priečinok /wp-content/uploads/ (žiadny zoznam priečinka), /.git/HEAD, /wp-content/debug.log a niekoľko bežných názvov kópií wp-config.php. V poriadku je, ak žiadny z nich nevráti obsah (404 alebo 403). Program neskúša nič iné a nič nemení.

Úloha A7.4b: Žiadne zvyšky vo webovom priečinku

Táto kontrola si vyžaduje cesty, ktoré si necháte overiť len pri vlastnej stránke. Najskôr kliknite na „Zobraziť môj kód“ a tento kód nastavte ako TXT záznam na _weboke-cursus.<vaša doména>, alebo ho vložte ako súbor na vašu stránku (pozrite si vysvetlenie pri kóde).


Čo vyplníte a čo nájdeme, neukladáme. Váš prehliadač si pamätá vaše odpovede a to, či ste úlohu splnili. Po prihlásení si v sekcii Moje kurzy uchovávame iba to, že úloha bola (takmer) správne vyriešená; aj to tam môžete odstrániť.

Na ďalšie čítanie

Tieto články popisujú postup v paneloch WebOké; v iných paneloch to funguje podobne.

Chvíľu strpenia…

Nastavte svoje domény

Pri každej doméne nastavte nameservery, prepojenie s hostingom a to, kto bude jej vlastníkom.

Načítavajú sa vaše domény…