Prijeđite na sadržaj

Postavke kolačića

Za svaku vrstu odaberite koje kolačiće dopuštate. Svoj odabir uvijek možete promijeniti putem poveznice Postavke kolačića na dnu svake stranice. Izjava o privatnosti

Nužni

Uvijek uključeni

Potrebni za prijavu, čuvanje košarice i pamćenje Vaših odabira. Uvijek su uključeni.

Koji kolačići?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša sesija i to da ostanete prijavljeni
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cijena s PDV-om ili bez njega
  • wok_cookies: Vaš odabir kolačića, 12 mjeseci

Mjeri koji oglas dovodi do posjeta ili narudžbe, kako ne bismo plaćali oglase koji ništa ne donose.

Koji kolačići?
  • Google Ads putem Google Tag Managera (_gcl_au, _gcl_aw), do 90 dana
  • OpenAI Ads, oglasi u ChatGPT-u
  • wok_aff: preko kojeg ste partnera došli k nama (partnerski program), 60 dana

4,6

Država i jezik

Svaka država ima vlastitu stranicu, s cijenama i PDV-om te države.

Pogledajte

Učvršćivanje web-stranice: dozvole, zaglavlja i sigurnosni dodaci

Modul 7: Sigurnost · Vrijeme čitanja: 10 minuta

Cilj učenja: Nakon ove lekcije moći ćete učvrstiti WordPress web-stranicu pomoću dozvola, postavki i sigurnosnih zaglavlja, te procijeniti vrijednost sigurnosnih dodataka.

Ključni pojmovi: učvršćivanje (hardening), dozvole datoteka (644, 755), DISALLOW_FILE_EDIT, bez PHP-a u uploads mapi, popis sadržaja mape, skrivanje verzije, X-Powered-By, sigurnosna zaglavlja, sigurnosne kopije i .git u web-mapi, WAF na poslužitelju, WAF u dodatku, skener zloćudnog softvera (malware)

Što je učvršćivanje

Učvršćivanje znači: postaviti web-stranicu tako da pogreška ili propust uzrokuju manju štetu. Time se ne zamjenjuju ažuriranja i jake lozinke (lekcije 7.2 i 7.3), ali se smanjuju posljedice. Zamislite kuću: ažuriranja su brave, a učvršćivanje je osiguravanje da provalnik koji se ipak probije unutra ne može doći do sefa.

Dozvole datoteka

Svaka datoteka i mapa na poslužitelju ima dozvole: tko smije čitati, pisati i izvršavati. Zapisuju se kao tri znamenke, za vlasnika, grupu i ostale korisnike. Smjernica iz WordPress dokumentacije:

ŠtoDozvoleZnačenje
Mape755Vlasnik smije sve, ostali smiju čitati i otvarati
Datoteke644Vlasnik smije čitati i pisati, ostali samo čitati
wp-config.phpstrože, primjerice 600 ili 640Samo vlasnik (i eventualno grupa web-poslužitelja) smije čitati

Koja vrijednost za wp-config.php funkcionira ovisi o tome kako Vaš hosting provider pokreće PHP: kod većine dijeljenog hostinga PHP se pokreće kao Vaš vlastiti korisnik, pa je 600 dovoljno. Isprobajte i provjerite radi li web-stranica i dalje.

Nikada 777. To znači: svatko na poslužitelju smije pisati. Upute koje kažu "postavite mapu na 777 ako prijenos ne radi" rješavaju problem na pogrešan način. Kod dobrog hostinga to nikada nije potrebno.

Postavke u wp-config.php

Nekoliko redaka koji puno znače (iznad "prestanite uređivati"):

// Bez uređivanja datoteka iz administracije (Izgled > Uređivač tema i Dodaci > Uređivač dodataka).
define( 'DISALLOW_FILE_EDIT', true );

// Poruke o pogreškama nikada na ekranu posjetitelja (lekcija 5.4).
define( 'WP_DEBUG', false );

Pomoću DISALLOW_FILE_EDIT nestaje uređivač pomoću kojeg se u administraciji mogu mijenjati PHP datoteke tema i dodataka. Provalnik koji preuzme administratorski račun tada ne može s dva klika postaviti zloćudni kod u Vašu temu. Dodaci se i dalje mogu instalirati; ako to također želite zabraniti (primjerice kod web-stranice koju vodite za klijenta), postoji DISALLOW_FILE_MODS, ali tada ni ažuriranja putem administracije više neće raditi.

Bez PHP-a u uploads mapi, bez popisa sadržaja mape

U mapi wp-content/uploads trebaju se nalaziti slike i dokumenti, nikada PHP datoteke. Provalnici koji putem propusta mogu prenijeti datoteku, pokušavaju upravo tamo postaviti PHP datoteku i zatim je pozvati. Blokirajte to pomoću .htaccess datoteke u mapi uploads (kod LiteSpeeda i Apachea):

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

Isključite i prikazivanje sadržaja mapa. Bez datoteke index.php ili index.html u mapi neki web-poslužitelji prikazuju popis svih datoteka ("Index of /wp-content/uploads/2026/11"). To je izlog za one koji traže sigurnosne kopije ili osjetljive dokumente. U .htaccess datoteci Vaše web-mape:

Options -Indexes

Mnogi hosting provideri ovo već standardno isključuju. Zadatak ove lekcije to provjerava.

Bez ostataka u web-mapi

Sve u web-mapi može se zatražiti putem weba, osim onoga što poslužitelj izvršava kao PHP ili blokira. Opasni su:

  • kopije datoteke wp-config.php (wp-config.php.bak, wp-config.old, wp-config.php~ iz uređivača teksta): one sadrže lozinku Vaše baze podataka i šalju se kao tekst (lekcija 1.3);
  • sigurnosne kopije poput backup.zip, site.tar.gz ili database.sql u web-mapi;
  • mapa .git programera, pomoću koje netko može preuzeti cijeli Vaš kod (a ponekad i lozinke);
  • debug.log u mapi wp-content (lekcija 5.4);
  • stare instalacijske ili testne datoteke poput info.php s funkcijom phpinfo().

Sigurnosne kopije čuvajte izvan web-mape ili izvan poslužitelja, i uklonite ostatke.

Skrivanje verzije: mala dobit

WordPress standardno u HTML postavlja:

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

i isto u RSS feedu. I PHP se ponekad javlja u zaglavlju: X-Powered-By: PHP/8.3.14. To skrivanje je razumno, ali nemojte od toga previše očekivati: programi provalnika jednostavno isprobavaju propust, bez obzira na verziju koju prikazujete, a verzije se često mogu zaključiti i iz ?ver= iza naziva skripti. Skrivanje je čišćenje, a ne sigurnost. Web-stranica koja skriva svoju verziju, ali se ne ažurira, jednako je ranjiva.

Ovako to učinite, u vlastitom malom dodatku ili u datoteci functions.php Vaše podređene teme (child theme):

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

A PHP zaglavlje uklonite postavkom expose_php = Off u PHP postavkama Vašeg hosting providera (kod DirectAdmina u Select PHP version, Options), ili pomoću Header unset X-Powered-By u datoteci .htaccess.

Sigurnosna zaglavlja

Pomoću nekoliko zaglavlja govorite pregledniku kako se treba odnositi prema Vašoj web-stranici. Najvažnija:

ZaglavljeŠto čini
Strict-Transport-SecuritySamo putem https (lekcija 3.1)
X-Content-Type-Options: nosniffPreglednik ne pogađa o kojoj se vrsti datoteke radi; sprječava da se preneseni "sličica" izvrši kao skripta
X-Frame-Options: SAMEORIGIN ili Content-Security-Policy: frame-ancestors 'self'Druge web-stranice ne smiju prikazivati Vašu web-stranicu u okviru (frame); sprječava clickjacking (nevidljiv gumb Vaše web-stranice ispod gumba druge stranice)
Referrer-Policy: strict-origin-when-cross-originKod klika na drugu web-stranicu šalje se samo naziv Vaše domene, a ne cijela adresa
Permissions-PolicyIsključuje funkcije preglednika koje Vaša web-stranica ne koristi (kamera, mikrofon, lokacija)
Content-Security-PolicyOdređuje točno iz kojih izvora smiju dolaziti skripte i stilovi. Moćno, ali teško ispravno podesiti s WordPressom i dodacima; započnite s načinom rada Report-Only

U .htaccess (kod LiteSpeeda i Apachea):

<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>

Nakon toga provjerite radi li sve: ugrađeni sadržaj, gumbi za plaćanje, widget za razgovor (chat). Vanjski alati poput securityheaders.com i internet.nl pokazuju što Vaša web-stranica šalje.

Sigurnosni dodaci, pošteno sagledani

Postoji mnogo sigurnosnih dodataka (primjerice Wordfence, Solid Security, All-In-One Security, Sucuri). Oni često objedinjuju: vatrozid (firewall), skener zloćudnog softvera (malware), zaštitu prijave, dvofaktorsku autentifikaciju, obavijesti i popis za učvršćivanje. Korisno, ali s ograničenjima:

  • Vatrozid u dodatku (WAF) pokreće se tek kada PHP radi. Zloćudni zahtjev prvo mora proći kroz web-poslužitelj i PHP prije nego što ga dodatak vidi. Propust u PHP datoteci koja se poziva izravno, ili napad koji sam PHP teško opterećuje, ne zaustavlja se uvijek. Vatrozid na poslužitelju (primjerice ModSecurity, Imunify360 ili vatrozid Vašeg hosting providera) nalazi se ranije u lancu i zaustavlja više toga, bez da Vaš dodatak obavlja taj posao. Pitajte svog hosting providera što se izvršava na poslužitelju.
  • Skener otkriva naknadno. Skener zloćudnog softvera (malware) javlja Vam da nešto nije u redu. To je vrijedno, ali ništa ne sprječava. A skener na istom poslužitelju kao i hakirana web-stranica može i sam biti izmijenjen od strane provalnika.
  • Ne zamjenjuju ažuriranja. Dodatak s poznatim propustom ostaje ranjiv, čak i uz sigurnosni dodatak pokraj njega. Neke sigurnosne usluge nude "virtualne zakrpe" koje zaustavljaju poznate napade dok ne ažurirate; korisno kao privremeno rješenje, a ne kao zamjena.
  • Sami su dodatak. Više koda, više toga za ažurirati, ponekad i sami imaju propust. A dva sigurnosna dodatka istovremeno često se sukobljavaju.
  • Troše računalnu snagu, posebno skeneri koji rade na Vašem vlastitom poslužitelju.

Razuman izbor: prvo provjerite što Vaš hosting provider već čini (vatrozid, skeniranje zloćudnog softvera, blokiranje pokušaja prijave). Dopunite ono što nedostaje, najčešće dvofaktorsku autentifikaciju i ograničavanje pokušaja prijave. Opsežan sigurnosni dodatak posebno je koristan kod hostinga koji sam po sebi čini malo.

Sažetak

  • Učvršćivanje ograničava štetu pogreške ili propusta; ne zamjenjuje ažuriranja i lozinke.
  • Mape 755, datoteke 644, wp-config.php strože; nikada 777.
  • Uključite DISALLOW_FILE_EDIT, blokirajte PHP u uploads mapi, isključite popise sadržaja mapa i uklonite sigurnosne kopije, .git i debug.log iz web-mape.
  • Skrivanje verzije je čišćenje, a ne sigurnost; sigurnosna zaglavlja pomažu pregledniku zaštititi Vaše posjetitelje.
  • Vatrozid na poslužitelju zaustavlja više nego dodatak; sigurnosni dodaci su dopuna, a ne zamjena.

Kviz

1. Upute kažu: "postavite wp-content na 777 ako prijenos ne uspijeva." Što mislite o tome?



2. Što čini DISALLOW_FILE_EDIT?



3. Zašto se vatrozid na poslužitelju nalazi ranije u lancu od vatrozida u dodatku?



4. Uklonili ste oznaku generatora. Je li Vaša web-stranica sada sigurna od propusta u starim verzijama?



5. Koje zaglavlje sprječava da druga web-stranica učita Vašu web-stranicu u nevidljivom okviru (frame)?



Zadatak

Zadatak A7.4: Što Vaša web-stranica pokazuje svima? Unesite adresu svoje web-stranice. Program čita naslovnu stranicu i RSS feed (/feed/) te provjerava: ne nalazi li se WordPress verzija u oznaci generatora u HTML-u i feedu, ne prikazuje li zaglavlje X-Powered-By PHP verziju, te šalje li Vaša web-stranica X-Content-Type-Options: nosniff, zaštitu od okvira (frame) (X-Frame-Options ili frame-ancestors) i Referrer-Policy? Nedostatak HSTS-a (lekcija 3.1) i Permissions-Policy je dopušten (narančasto).

Zadatak A7.4: Što Vaša web-stranica pokazuje svima?


Ono što unesete i što pronađemo ne spremamo. Vaš preglednik pamti Vaše odgovore i je li zadatak položen. Ako ste prijavljeni, u Moji tečajevi čuvamo samo podatak da ste zadatak (gotovo) uspješno riješili; ondje to možete i izbrisati.

Zadatak A7.4b: Nema ostataka u mapi web-stranice. Dokažite da je riječ o Vašoj vlastitoj web-stranici (TXT zapis ili datoteka s kodom zadatka). Program zatim provjerava kratak fiksni popis: mapu /wp-content/uploads/ (bez popisa sadržaja mape), /.git/HEAD, /wp-content/debug.log i nekoliko uobičajenih naziva kopija datoteke wp-config.php. Dobro je ako nijedna od njih ne vraća sadržaj (404 ili 403). Program ne pokušava ništa drugo i ništa ne mijenja.

Zadatak A7.4b: Nema ostataka u mapi web-stranice

Ova provjera dohvaća putanje koje dajete na provjeru samo za vlastitu web-stranicu. Najprije kliknite na "Prikaži moj kod" i postavite taj kod kao TXT zapis na _weboke-cursus.<vaša domena> ili kao datoteku na svojoj web-stranici (pogledajte objašnjenje uz kod).


Ono što unesete i što pronađemo ne spremamo. Vaš preglednik pamti Vaše odgovore i je li zadatak položen. Ako ste prijavljeni, u Moji tečajevi čuvamo samo podatak da ste zadatak (gotovo) uspješno riješili; ondje to možete i izbrisati.

Dodatno čitanje

Ovi članci opisuju korake u kontrolnim pločama WebOké; u drugim kontrolnim pločama rade na sličan način.

Trenutak…

Postavite svoje domene

Za svaku domenu odredite nameservere, povezivanje s hostingom i tko postaje vlasnik.

Učitavanje Vaših domena…