Page title: Hakirana web stranica? Kako prepoznati zarazu i što napraviti odmah | Savjeti za održavanje i sigurnost web stranica | Medialive

> Stranica se preusmjerava, prikazuje lažnu Cloudflare provjeru ili postane bijela? Saznajte kako prepoznati zarazu, što ne raditi i kako vratiti web pod kontrolu.

Source: https://www.medialive.hr/blog/savjeti-za-odrzavanje-i-sigurnost-web-stranica/hakirana-web-stranica-kako-prepoznati-zarazu-i-sto-napraviti-odmah

Savjeti za održavanje i sigurnost web stranica 02.07.2026. Vjeko

# Hakirana web stranica? Kako prepoznati zarazu i što napraviti odmah

Stranica se preusmjerava, prikazuje lažnu Cloudflare provjeru ili postane bijela? Saznajte kako prepoznati zarazu, što ne raditi i kako vratiti web pod kontrolu.

![Hakirana web stranica? Kako prepoznati zarazu i što napraviti odmah](https://www.medialive.hr/images/blog/medialive_blog-hakirana_web_stranica.webp)
Web stranica se normalno otvori, a zatim nestane. Posjetiteljima se pojavi sumnjiva “Cloudflare provjera”, čudan prozor koji traži klik ili kopiranje naredbe, stranica preusmjerava na nepoznatu adresu, šalje spam ili je Google počne označavati kao nesigurnu.

To nisu bezazleni kvarovi. U velikom broju slučajeva riječ je o hakiranoj web stranici i aktivnom malwareu koji može ugroziti poslovanje, reputaciju tvrtke i sigurnost vaših posjetitelja.

## Kako prepoznati da je web stranica zaražena?

Neke zaraze su očite, ali mnoge rade tiho i prikazuju se samo određenim posjetiteljima. Administrator zato može otvoriti web i vidjeti da sve djeluje normalno, dok obični korisnici dobivaju sasvim drugi sadržaj.

Najčešći znakovi upozorenja su:

- stranica se prikaže na trenutak, a zatim postane bijela ili prazna
- pojavljuje se lažna Cloudflare, CAPTCHA ili “security check” provjera
- web preusmjerava na nepoznate stranice, oglase, kladionice, lažne nagradne igre ili phishing sadržaj
- preglednik ili Google prikazuje upozorenje da je stranica opasna
- u WordPressu se pojavljuju nepoznati korisnici, pluginovi, datoteke ili direktoriji
- web šalje veliku količinu spama s vaše domene
- hosting javlja malware, sumnjive PHP datoteke ili neuobičajenu potrošnju resursa
- stranica radi sporije, povremeno ruši prikaz ili javlja neobične greške
- kupci javljaju da ne mogu otvoriti stranicu, prijaviti se ili završiti kupnju

Posebno opasne su novije **ClickFix** zaraze. One koriste lažne Cloudflare ili CAPTCHA provjere kako bi posjetitelja navele da kopira i pokrene zlonamjernu naredbu na vlastitom računalu. Drugim riječima, više nije ugrožen samo web nego i korisnik koji ga pokušava otvoriti.

## Zašto nije dovoljno obrisati jedan sumnjivi fajl?

Kod ozbiljnije infekcije problem gotovo nikada nije samo jedan JavaScript isječak ili jedan sumnjivi PHP fajl.

Napadači često ostavljaju više načina za ponovni pristup webu: skrivene administratore, izmijenjene datoteke teme, zlonamjerne pluginove, kod u bazi podataka, cron zadatke, lažne sistemske direktorije ili skripte skrivene u uploads mapi. Ako se ukloni samo vidljivi simptom, zaraza se može vratiti čim se aktivira drugi skriveni loader.

Zato ručno “brisanje onog što izgleda čudno” često završi s puno potrošenog vremena i bez sigurnosti da je stranica zaista čista.

## Što napraviti odmah?

Ako sumnjate da je web zaražen, preporučujemo sljedeće korake:
1. **Nemojte ignorirati problem.** Nemojte čekati da se “sam od sebe popravi”, jer posjetitelji u međuvremenu mogu biti izloženi prijevarama ili zlonamjernom sadržaju.
2. **Ne unosite lozinke kroz javnu stranicu.** Dok se ne utvrdi stanje, izbjegavajte prijave u WordPress, webshop i druge servise preko kompromitirane domene.
3. **Napravite kopiju trenutnog stanja.** Ona može biti korisna za utvrđivanje uzroka, ali ne treba je smatrati sigurnim backupom za kasnije vraćanje.
4. **Provjerite postoji li stariji, čisti backup.** Ako je infekcija opsežna, povratak na zadnju provjereno ispravnu sigurnosnu kopiju često je sigurniji i brži od pokušaja parcijalnog čišćenja.
5. **Resetirajte pristupe.** Treba promijeniti lozinke za hosting, WordPress, FTP/SFTP, bazu podataka i Cloudflare ili drugi DNS servis.
6. **Napravite detaljan pregled instalacije.** To uključuje datoteke, bazu, korisnike, pluginove, temu, cron zadatke, cache i sve vanjske skripte.

## Kako najčešće dolazi do zaraze?

Najčešći uzrok nije “probijen server”, nego zastarjela i loše održavana WordPress instalacija.

Rizik raste kada web ima staru temu, mnogo nepotrebnih dodataka, pluginove koji nisu godinama ažurirani, piratske teme ili dodatke, slabe lozinke, više nepoznatih administratora i nikakav plan redovitog održavanja.

Poseban problem su starije premium teme koje godinama vuku vlastite dodatke, page buildere i funkcionalnosti koje webu zapravo ne trebaju. Takve instalacije s vremenom postanu tehnički dug: izvana mogu djelovati normalno, ali iznutra su prepune zastarjelog koda, preklapanja pluginova i potencijalnih sigurnosnih rupa.

## Nakon čišćenja: treba zatvoriti uzrok, ne samo posljedicu

Vraćanje weba iz backupa ili uklanjanje malwarea je hitna intervencija. No stvarni posao počinje nakon toga.

Potrebno je ažurirati WordPress, temu i dodatke, ukloniti sve što nije nužno, provjeriti administratore, uvesti sigurnosne kopije izvan primarnog hostinga i osigurati redovito održavanje. Kod nekih starijih webova najisplativije rješenje nije beskonačno krpanje, nego postupno sređivanje ili izrada jednostavnije, modernije i sigurnije verzije stranice.

Redovito održavanje nije samo instaliranje novih verzija plugina. To je kontinuirana briga o sigurnosti, funkcionalnosti, backupima, kompatibilnosti i tome da vaš web ne postane problem tek onda kada ga posjetitelji više ne mogu otvoriti.

## Trebate pomoć sa zaraženom ili zastarjelom stranicom?

Ako vam se web preusmjerava, prikazuje lažnu provjeru, šalje spam, javlja sigurnosna upozorenja ili se ponaša neobično, javite nam se što prije.

U sklopu usluge [čišćenja zaraženih web stranica](https://www.medialive.hr/usluge/ciscenje-hakiranih-web-stranica) možemo pregledati stanje instalacije, procijeniti postoji li siguran backup, pomoći pri oporavku te predložiti korake za uklanjanje nepotrebnih dodataka, ažuriranje sustava i dugoročnu zaštitu.

Nemojte čekati da web potpuno nestane iz rezultata pretraživanja ili da problem prijave vaši kupci. Što se ranije [reagira](https://www.medialive.hr/kontakt), veća je šansa za brži i sigurniji oporavak.

Želite bolji web?

## Razgovarajmo o vašem projektu.

Javite nam što želite postići, a mi ćemo predložiti realno i održivo web rješenje.

---

Ova Markdown verzija namijenjena je AI agentima i alatima za čitanje sadržaja.
<style id="ml-newsletter-popup-css">
.mlnp{position:fixed;z-index:99990;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#18171c}.mlnp *{box-sizing:border-box}.mlnp[hidden]{display:none!important}.mlnp__box{background:#fff;border:1px solid rgba(24,23,28,.10);box-shadow:0 24px 80px rgba(24,23,28,.18);border-radius:24px;overflow:hidden}.mlnp__inner{padding:26px}.mlnp__eyebrow{display:inline-flex;gap:8px;align-items:center;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#5A41BF;margin-bottom:10px}.mlnp__title{font-size:24px;line-height:1.15;margin:0 0 10px;font-weight:850}.mlnp__text{font-size:15px;line-height:1.55;color:#5e5d64;margin:0 0 18px}.mlnp form{display:grid;gap:10px}.mlnp label{font-size:13px;font-weight:750}.mlnp input{width:100%;border:1px solid #d9d9db;border-radius:12px;padding:12px 13px;font-size:15px;background:#fff}.mlnp button{border:0;border-radius:12px;padding:12px 16px;font-weight:850;cursor:pointer}.mlnp__submit{background:#5A41BF;color:#fff}.mlnp__close{position:absolute;top:12px;right:12px;width:34px;height:34px;border-radius:999px;background:rgba(24,23,28,.06);color:#18171c;font-size:20px;line-height:1}.mlnp__note{font-size:12px;color:#74727a;line-height:1.45;margin:10px 0 0}.mlnp__success{display:none;padding:18px;border-radius:16px;background:#f1f7f2;border:1px solid #cfe8d2;color:#244629;font-weight:700}.mlnp.is-success form,.mlnp.is-success .mlnp__text,.mlnp.is-success .mlnp__note{display:none}.mlnp.is-success .mlnp__success{display:block}.mlnp--popup{inset:0;display:grid;place-items:center;background:rgba(24,23,28,.28);backdrop-filter:blur(5px);padding:20px}.mlnp--popup .mlnp__box{width:min(520px,100%)}.mlnp--slide{right:22px;bottom:22px;width:min(420px,calc(100vw - 44px))}.mlnp--corner_left,.mlnp--corner_left_minimal{left:22px;bottom:22px;width:min(390px,calc(100vw - 44px))}.mlnp--corner_left .mlnp__box,.mlnp--corner_left_minimal .mlnp__box{border-radius:20px;box-shadow:0 18px 54px rgba(24,23,28,.16)}.mlnp--corner_left .mlnp__inner{padding:22px}.mlnp--corner_left .mlnp__title{font-size:21px}.mlnp--corner_left .mlnp__text{font-size:14px}.mlnp--corner_left_minimal .mlnp__inner{padding:18px}.mlnp--corner_left_minimal .mlnp__eyebrow{display:none}.mlnp--corner_left_minimal .mlnp__title{font-size:18px;margin-right:32px}.mlnp--corner_left_minimal .mlnp__text{font-size:13px;margin-bottom:12px}.mlnp--corner_left_minimal form{grid-template-columns:1fr auto;align-items:end}.mlnp--corner_left_minimal form label{display:none}.mlnp--corner_left_minimal input[name="name"]{display:none}.mlnp--corner_left_minimal input[type="email"]{padding:11px 12px}.mlnp--corner_left_minimal .mlnp__submit{padding:11px 14px}.mlnp--corner_left_minimal .mlnp__note{display:none}.mlnp--bar{left:18px;right:18px;bottom:18px}.mlnp--bar .mlnp__inner{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(260px,.7fr);gap:20px;align-items:center}.mlnp--bar .mlnp__title{font-size:20px}.mlnp--bar .mlnp__text{margin-bottom:0}@media(max-width:767px){.mlnp--hide-mobile{display:none!important}.mlnp--bar .mlnp__inner{grid-template-columns:1fr}.mlnp__inner{padding:22px}.mlnp__title{font-size:21px}.mlnp--slide,.mlnp--corner_left,.mlnp--corner_left_minimal{left:14px;right:14px;bottom:14px;width:calc(100vw - 28px)}.mlnp--corner_left_minimal form{grid-template-columns:1fr}}
</style>
<div id="ml-newsletter-popup" class="mlnp mlnp--corner_left" hidden data-delay="6000" data-frequency-days="14">
  <div class="mlnp__box" role="dialog" aria-modal="false" aria-labelledby="mlnp-title">
    <button class="mlnp__close" type="button" aria-label="Zatvori">×</button>
    <div class="mlnp__inner">
      <div>
        <div class="mlnp__eyebrow">Medialive newsletter</div>
        <h2 id="mlnp-title" class="mlnp__title">Želite korisne savjete za bolji web?</h2>
        <p class="mlnp__text">Povremeno šaljemo kratke i konkretne savjete o web stranicama, web shopovima, održavanju i online nastupu. Bez spama.</p>
      </div>
      <form method="post" action="/component/ml_newsletter">
        <label>Ime</label><input type="text" name="name" autocomplete="name" placeholder="Vaše ime">
        <label>Email</label><input type="email" name="email" required autocomplete="email" placeholder="vas@email.hr">
        <input type="hidden" name="task" value="subscribe"><input type="hidden" name="mlnp_popup" value="1"><input type="hidden" name="mlnp_ajax" value="1"><input type="hidden" name="source_url" value=""><div style="position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden" aria-hidden="true"><label>Website</label><input type="text" name="mln_hp" value="" tabindex="-1" autocomplete="off"></div><input type="hidden" name="mln_started_at" value="1783110684"><input type="hidden" name="d8f5b86d16b59b85d603192eaebba3ff" value="1">
        <button class="mlnp__submit" type="submit">Prijavi me</button>
      </form>
      <div class="mlnp__success">Hvala! Poslali smo vam email za potvrdu prijave.</div>
      <p class="mlnp__note">Prijavu potvrđujete klikom na link koji ćemo poslati na email. Odjava je moguća u svakom newsletteru.</p>
    </div>
  </div>
</div>
<script>
(function(){
  var el=document.getElementById('ml-newsletter-popup'); if(!el) return;
  var key='mlnp_closed_until_v1';
  var now=Date.now();
  var until=parseInt(localStorage.getItem(key)||'0',10);
  if(until && until>now) return;
  function closeBox(days){ var d=days || parseInt(el.getAttribute('data-frequency-days')||'14',10); localStorage.setItem(key, String(Date.now()+d*86400000)); el.setAttribute('hidden','hidden'); }
  var close=el.querySelector('.mlnp__close'); if(close) close.addEventListener('click', function(){ closeBox(); });
  el.addEventListener('click', function(e){ if(e.target===el && el.classList.contains('mlnp--popup')) closeBox(); });
  var delay=parseInt(el.getAttribute('data-delay')||'6000',10);
  setTimeout(function(){ el.removeAttribute('hidden'); }, delay);
  var form=el.querySelector('form');
  if(form){
    form.addEventListener('submit', function(e){
      e.preventDefault();
      var submit=form.querySelector('.mlnp__submit');
      var oldText=submit ? submit.textContent : '';
      var src=form.querySelector('input[name="source_url"]'); if(src) src.value=window.location.href;
      if(submit){ submit.disabled=true; submit.textContent='Šaljem...'; }
      var url=form.getAttribute('action') || window.location.href;
      url += (url.indexOf('?') === -1 ? '?' : '&') + 'format=json';
      fetch(url, { method:'POST', body:new FormData(form), credentials:'same-origin', headers:{'X-Requested-With':'XMLHttpRequest'} })
        .then(function(r){ return r.json(); })
        .then(function(data){
          if(data && data.ok){
            try{ localStorage.setItem(key, String(Date.now()+365*86400000)); }catch(err){}
            var success=el.querySelector('.mlnp__success');
            if(success && data.message){ success.textContent=data.message; }
            el.classList.add('is-success');
          } else {
            alert((data && data.message) ? data.message : 'Prijava nije uspjela. Pokušajte ponovno.');
          }
        })
        .catch(function(){ alert('Prijava nije uspjela. Pokušajte ponovno.'); })
        .finally(function(){ if(submit){ submit.disabled=false; submit.textContent=oldText; } });
    });
  }
})();
</script>