Skip to main content
Back to blog

SEO Vodič Korak 7: Sigurnost — Osnova koju Google Očekuje 2026.

·12 min read·by LANGR SEO

SEO Vodič Korak 7: Sigurnost

Ovo je Korak 7 u Vodiču za SEO od 13 koraka. Sigurnost nije samo zaštita korisnika — izravno utječe na vaše pozicije u pretraživanju. Google koristi HTTPS kao signal za rangiranje od 2014. godine, a očekivanja su samo porasla.


Većina vlasnika stranica sigurnost doživljava kao binarnu: "Imamo SSL, pa smo sigurni." U stvarnosti, Google ocjenjuje stotine sigurnosnih signala. Stranice s ispravnim sigurnosnim zaglavljima, valjanim certifikatima i bez mješovitog sadržaja rangiraju bolje od onih koje imaju samo osnovni SSL certifikat — pod uvjetom da je sve ostalo jednako.

Dobra vijest: većina sigurnosnih popravaka je jednokratna konfiguracija. Postavite ih jednom, i trajno štite vaše pozicije.

SSL Konfiguracija

SSL (tehnički TLS) enkriptira vezu između vašeg poslužitelja i posjetitelja. Od 2014. godine, Google je izričito potvrdio HTTPS kao signal za rangiranje. U 2026. godini, nedostatak HTTPS-a nije samo problem rangiranja — Chrome označava HTTP stranice kao "Nije sigurno" u adresnoj traci, uništavajući povjerenje korisnika.

Zahtjevi za ispravan SSL:

| Zahtjev | Zašto | Kako provjeriti | |---------|-------|-----------------| | Valjan certifikat | Istečen = upozorenje u pregledniku = odbijeni korisnici | Provjerite datum isteka | | Cijeli lanac | Nepotpuni lanci ne prolaze na nekim uređajima | SSL Labs test | | TLS 1.2+ | Starije verzije imaju poznate ranjivosti | SSL Labs test | | Nema SHA-1 | Zastarjelo, preglednici ga odbacuju | Detalji certifikata | | SAN pokrivenost | www i ne-www moraju biti pokriveni | Detalji certifikata | | Automatska obnova | Sprječava katastrofe isteka | Let's Encrypt / konfiguracija pružatelja |

SSL bodovanje:

100% = Valjan cert + Cijeli lanac + TLS 1.3 + Jak šifrant + Automatska obnova
  0% = Istečeni ili nedostajući certifikat

Uobičajene SSL pogreške:

  1. Certifikat ističe bez obavijesti — Postavite praćenje (Korak 6) najmanje 30 dana prije isteka
  2. Nepotpuni certifikat lanac — Poslužitelj mora poslati međucertifikate, ne samo list
  3. Mješoviti sadržaj — HTTPS stranica učitava HTTP resurse (slike, skripte, stilove)
  4. Petlje preusmjeravanja — HTTP → HTTPS → HTTP ciklusi uzrokovani pogrešno konfiguriranim CDN/proxy
  5. Nepodudaranje non-www i www — Certifikat pokriva jedan, ali ne i drugi

Brza pobjeda: Prođite svoj domen kroz SSL Labs (ssllabs.com/ssltest). Sve ispod ocjene "A" ima rješive probleme. Većina pružatelja usluga to popravlja jednim klikom.

Sigurnosna Zaglavlja

Sigurnosna zaglavlja su HTTP zaglavlja odgovora koja nalažu preglednicima kako se ponašati prilikom učitavanja vaše stranice. Sprječavaju cijele kategorije napada — a Googleovi roboti ih provjeravaju.

Osnovna sigurnosna zaglavlja:

Politika Sigurnosti Sadržaja (CSP)

CSP je najsnažnije sigurnosno zaglavlje. Kaže preglednicima točno koje resurse (skripte, stilove, slike, fontove) je dopušteno učitati na vašim stranicama.

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://api.example.com; frame-ancestors 'none';

Što CSP sprječava:

  • Cross-site scripting (XSS) napadi
  • Napadi injekcije podataka
  • Clickjacking (putem frame-ancestors)
  • Neovlaštene izvršenja skripti (kriptomineri, ubrizgivači oglasa)

Strategija implementacije CSP:

  1. Počnite s Content-Security-Policy-Report-Only (bilježi prekršaje bez blokiranja)
  2. Pratite izvještaje 1-2 tjedna
  3. Dodajte legitimne izvore na bijelu listu
  4. Prebacite se na strogi način
  5. Dodajte report-uri ili report-to za kontinuirano bilježenje prekršaja

X-Frame-Options

Sprječava vašu stranicu od ugradnje u iframe-ove na drugim domenama (zaštita od clickjackinga).

X-Frame-Options: DENY

Ili ako trebate omogućiti ugradnju s iste domene:

X-Frame-Options: SAMEORIGIN

X-Content-Type-Options

Sprječava preglednike od MIME-tip sniffinga (tumačenje datoteka kao različitih vrsta od onih koje su deklarirane).

X-Content-Type-Options: nosniff

Ova jedna linija sprječava napade gdje .jpg datoteka sadrži skriveni JavaScript koji preglednik može izvršiti.

Referrer-Policy

Kontrolira koliko informacija o refereru se šalje kada korisnici kliknu na poveznice s vaše stranice.

Referrer-Policy: strict-origin-when-cross-origin

Ovo šalje cijeli URL za zahtjeve s iste domene, ali samo izvor (domen) za zahtjeve s drugih domena. Balansira analitičke potrebe s privatnošću.

Permissions-Policy

Kontrolira koje značajke preglednika (kamera, mikrofon, geolokacija, itd.) se mogu koristiti na vašoj stranici.

Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()

Onemogućavanje značajki koje ne koristite sprječava treće strane da ih zloupotrebljavaju.

Primjer implementacije zaglavlja (Next.js):

// next.config.js
module.exports = {
  async headers() {
    return [{
      source: '/(.*)',
      headers: [
        { key: 'X-Content-Type-Options', value: 'nosniff' },
        { key: 'X-Frame-Options', value: 'SAMEORIGIN' },
        { key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
        { key: 'Permissions-Policy', value: 'camera=(), microphone=(), geolocation=()' },
        { key: 'Strict-Transport-Security', value: 'max-age=31536000; includeSubDomains; preload' },
      ]
    }]
  }
}

Implementacija zaglavlja (Apache .htaccess):

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=()"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Implementacija zaglavlja (Nginx):

add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Brza pobjeda: Dodajte svih 5 gornjih zaglavlja u konfiguraciju svog poslužitelja. Ovo traje 5 minuta i odmah poboljšava vašu sigurnosnu posturu u bilo kojem alatu za skeniranje.

HSTS Preload

HTTP Strict Transport Security (HSTS) nalaže preglednicima da uvijek koriste HTTPS za vašu domenu — čak i prije prvog zahtjeva. Bez HSTS-a, prvi posjet vašoj stranici može koristiti HTTP (ranjiv na presretanje) prije nego što se izvrši preusmjeravanje na HTTPS.

HSTS zaglavlje:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Tri direktive:

| Direktiva | Značenje | |-----------|----------| | max-age=31536000 | Zapamti ovo na 1 godinu (u sekundama) | | includeSubDomains | Primijeni na sve poddomene | | preload | Zatraži uključivanje na preloaded listama preglednika |

HSTS preload lista:

Krajnja zaštita HSTS-a. Preglednici dolaze s unaprijed ugrađenom listom domena koje moraju uvijek koristiti HTTPS. Podnošenje vaše domene na hstspreload.org znači:

  • Posjetitelji prvi put odmah dobivaju HTTPS (bez HTTP → HTTPS preusmjeravanja)
  • Nemoguće je da napadači snižavaju veze
  • Trajno (teško ukloniti jednom kada se podnese)

Zahtjevi za HSTS preload:

  1. Valjan HTTPS certifikat
  2. Preusmjerite sav HTTP na HTTPS (uključujući poddomene)
  3. HSTS zaglavlje s max-age >= 31536000
  4. HSTS zaglavlje uključuje includeSubDomains
  5. HSTS zaglavlje uključuje preload
  6. Sve poddomene moraju podržavati HTTPS

Upozorenje: Podnesite na preload samo ako SVE vaše poddomene podržavaju HTTPS. Direktiva includeSubDomains znači da će bilo koja HTTP-only poddomena postati nedostupna.

Brza pobjeda: Ako već imate HTTPS na svim poddomenama, dodajte potpuno HSTS zaglavlje i podnesite na hstspreload.org. Obrada traje nekoliko tjedana, ali zaštita je trajna.

Skeniranje Ranjivosti

Automatizirano skeniranje ranjivosti identificira poznate sigurnosne probleme u vašem sustavu prije nego što ih napadači iskoriste.

Što skeniranje ranjivosti provjerava:

  • Zastarjela softvera: WordPress, dodaci, JavaScript biblioteke s poznatim CVE-ima
  • Izložene datoteke: .env, .git, wp-config.php, ispisi baza podataka
  • Curjenje informacija: Zaglavlja verzije poslužitelja, način debagiranja, stack tragovi
  • Zadani podaci za prijavu: Administratorske stranice bez autentifikacije, zadane lozinke
  • Otvorene priključke/usluge: Nepotrebne usluge izložene internetu
  • Točke injekcije: Obrasci bez CSRF zaštite, nevalidirani unosi

Uobičajene ranjivosti po platformi:

| Platforma | Najveća ranjivost | Popravak | |-----------|-------------------|----------| | WordPress | Zastarjeli dodaci | Automatska ažuriranja + WAF | | Shopify | Dozvole aplikacija trećih strana | Revizija popisa aplikacija svaka tri mjeseca | | Next.js | Izložene API rute | Auth middleware + ograničenje brzine | | Statične stranice | Nepravilna CDN konfiguracija | Prikaz pravila predmemorije | | Prilagođeno | SQL injekcija | Parametrizirani upiti |

Učestalost skeniranja:

  • Dnevno: Automatsko skeniranje površine (SSL, zaglavlja, izložene datoteke)
  • Tjedno: Provjera ranjivosti ovisnosti (npm audit, WordPress skener za dodatke)
  • Mjesečno: Dubinsko skeniranje s autentificiranim testiranjem
  • Nakon svake isporuke: Provjera regresije

Brza pobjeda: Pokrenite npm audit (Node.js) ili provjerite popis dodataka vašeg CMS-a za zastarjele komponente. Odmah ispravite kritične/visoke ozbiljnosti probleme.

Mješoviti Sadržaj

Mješoviti sadržaj nastaje kada HTTPS stranica učitava resurse (slike, skripte, stilove, iframe-ove) putem HTTP-a. Ovo djelomično prekida enkripciju i aktivira upozorenja u preglednicima.

Vrste mješovitog sadržaja:

| Tip | Ozbiljnost | Primjer | Ponašanje preglednika | |-----|------------|---------|-----------------------| | Aktivni | Visok | HTTP skripta, iframe, CSS | Zadano blokirano | | Pasivni | Srednji | HTTP slika, video, audio | Učitano s upozorenjem |

Aktivni mješoviti sadržaj blokiraju moderni preglednici — to znači da se vaše skripte i stilovi jednostavno neće učitati. Pasivni mješoviti sadržaj se učitava, ali prikazuje sigurnosna upozorenja.

Pronalazak mješovitog sadržaja:

  1. Otvorite Chrome DevTools → Konzola
  2. Potražite "Mješoviti sadržaj" upozorenja
  3. Alternativno, skenirajte sa crawlerom (Screaming Frog, LANGR)

Uobičajeni izvori mješovitog sadržaja:

  • Hardkodirane http:// URL adrese u sadržaju (blog postovi, opisi proizvoda)
  • Widgeti trećih strana koji učitavaju HTTP resurse
  • Ugrađeni sadržaj (stari YouTube ugradnje, widgeti društvenih mreža)
  • CSS background-image s HTTP URL-ovima
  • Fontovi učitani preko HTTP-a

Popravak mješovitog sadržaja:

<!-- Loše -->
<img src="http://example.com/image.jpg" />

<!-- Dobro -->
<img src="https://example.com/image.jpg" />

<!-- Najbolje (protokol-relativno, prilagodljivo protokolu stranice) -->
<img src="//example.com/image.jpg" />

Popravak u bazi podataka (WordPress):

UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://yourdomain.com', 'https://yourdomain.com');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, 'http://yourdomain.com', 'https://yourdomain.com');

Brza pobjeda: Otvorite svoju početnu stranicu u Chrome-u, pritisnite F12, provjerite karticu Konzola za upozorenja o mješovitom sadržaju. Ispravite sve što se pojavi — ovo je izravno vidljivo Googleu.

Rizici Skripti Trećih Strana

Svaka vanjska skripta koju učitate potencijalna je sigurnosna (i performansna) odgovornost. Skripte trećih strana mogu:

  • Biti kompromitirane (napadi na opskrbni lanac)
  • Pratiti vaše korisnike bez pristanka (kršenje GDPR-a)
  • Usporiti vašu stranicu (blokiranje renderiranja, mrežna latencija)
  • Poremetiti funkcionalnost (ažuriranja verzija, prekidi)
  • Ubrizgati nepoželjni sadržaj (skripte za oglase koje su krenule naopako)

Revizija vaših skripti trećih strana:

| Skripta | Potrebna? | Razina Rizika | Alternativa | |---------|-----------|---------------|-------------| | Google Analytics | Često da | Nizak | Praćenje s poslužitelja | | Widgeti za chat | Možda | Srednji | Samostalna rješenja | | Tipke za dijeljenje na društvenim mrežama | Rijetko | Srednji | Statičke poveznice za dijeljenje | | A/B testiranje | Ponekad | Visoko | Testiranje s poslužitelja | | Retargeting pikseli | Poslovna odluka | Visoko | Podaci prve strane | | Fontovi CDN-a | Praktično | Nizak | Samostalni fontovi |

Ublažavanje rizika za neophodne skripte trećih strana:

  1. Integritet podizvornih podataka (SRI): Hash verifikacija sprječava učitavanje skripti koje su izmijenjene
<script src="https://cdn.example.com/lib.js"
        integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxAE+sO0..."
        crossorigin="anonymous"></script>
  1. CSP ograničenja: Dopuštajte samo skripte s poznatih domena
  2. Sandboxirane iframe: Izolirajte widgete trećih strana
  3. Redovite revizije: Kvartalna revizija svih vanjskih resursa
  4. Praćenje: Upozorenje na nove vanjske domene koje se pojavljuju na vašim stranicama

Brza pobjeda: Nabrojite svaki