WordPress presmerováva na inú stránku: ako nájsť a odstrániť presmerovanie

Návštevníci končia na stránke s lotériou, lekárňou alebo falošnou technickou podporou, a vy pritom vidíte svoj web normálne. To je znak vloženého presmerovania, najčastejšie podmieneného. Tento sprievodca vysvetľuje, ako presmerovanie vyvolať, ako ho nájsť v súboroch alebo v databáze a ako zavrieť prístup, ktorým bolo vložené.

Publikované 21. septembra 2026 Čas čítania: 10 minút

Všetci sprievodcovia

To najdôležitejšie

  1. Vyvolajte presmerovanie ako návštevník: okno súkromného prehliadania, telefón na mobilných dátach, príchod z výsledku vyhľadávania.
  2. Skôr než čokoľvek zmeníte, urobte úplnú kópiu webu v súčasnom stave, súbory aj databázu.
  3. Zmeňte heslá k hostingu, FTP, databáze a administrátorským účtom WordPressu, potom vymeňte bezpečnostné kľúče v wp-config.php.
  4. Presmerovanie hľadajte na štyroch miestach: .htaccess, súbory PHP, databáza, nastavenia adresy webu.
  5. Odstráňte aj prístup, ktorým sa dostalo dovnútra: neznáme administrátorské účty, súbory PHP v wp-content/uploads, pluginy na preinštalovanie alebo zmazanie.
  6. Otvorte v Google Search Console časť Problémy so zabezpečením, a ak je v nej web uvedený, požiadajte o kontrolu.

Prečo presmerovanie nevidíte

Presmerovanie vložené pri napadnutí si vyberá, koho sa týka. Najčastejšie šetrí toho, kto web spravuje, aby zostalo na mieste čo najdlhšie. Najbežnejšie podmienky:

Správu od zákazníka v zmysle „váš web ma posiela inam“ preto berte vážne, aj keď sa vám všetko zobrazuje správne.

Ako presmerovanie vyvolať

Vžite sa do situácie návštevníka, ktorého presmerovanie zasiahne:

  1. Otvorte okno súkromného prehliadania, vyhľadajte názov svojej firmy vo vyhľadávači a kliknite na svoj výsledok.
  2. Zopakujte to z telefónu, na mobilných dátach namiesto Wi-Fi.
  3. Poznačte si cieľovú adresu, čas a zariadenie: tieto tri údaje sa hodia poskytovateľovi hostingu a neskôr aj pri žiadosti o kontrolu v Googli.

Ak máte prístup k terminálu, tento príkaz si vyžiada vašu úvodnú stránku a predstaví sa pritom ako iPhone, ktorý prichádza z Googlu:

Terminál (vo Windows napíšte namiesto curl príkaz curl.exe)
curl -s -i -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)" -e "https://www.google.com/" https://www.vas-web.com/

Prečítajte si prvé riadky odpovede. Kód 301 alebo 302, za ktorým nasleduje riadok Location: s neznámou adresou, znamená presmerovanie vykonané serverom: nachádza sa v .htaccess alebo v súbore PHP. Kód 200, hoci sa prehliadač presmeruje, znamená presmerovanie vykonané v stránke, v JavaScripte: najčastejšie sa nachádza v databáze alebo v súbore témy.

Skôr než sa dotknete webu: tri kroky

  1. Úplná kópia v súčasnom stave. Súbory aj databáza, s dátumom, uložené mimo servera. Slúži ako dôkaz, ako bod na porovnanie a ako poistka, ak čistenie odstráni niečo užitočné.
  2. Heslá, z čistého zariadenia. Zákaznícka zóna poskytovateľa hostingu, účty FTP alebo SFTP, používateľ databázy (nové heslo zapíšte do wp-config.php, konštanta DB_PASSWORD) a potom každý administrátorský účet WordPressu.
  3. Bezpečnostné kľúče. Nahraďte osem riadkov od AUTH_KEY po NONCE_SALT v wp-config.php novou sadou vygenerovanou na https://api.wordpress.org/secret-key/1.1/salt/. Všetky otvorené relácie sa ukončia, vrátane relácie útočníka.
S WP-CLI zvládnete tretí krok jediným príkazom
wp config shuffle-salts

Kde sa presmerovanie skrýva

1. Súbor .htaccess

V koreňovom adresári webu, a niekedy aj v podadresári, môže .htaccess obsahovať pravidlá prepisovania adries, ktoré pridal útočník. Blok, ktorý zapisuje samotný WordPress, je krátky a ohraničený riadkami # BEGIN WordPress a # END WordPress:

Blok, ktorý WordPress v slovenčine zapisuje pre web nainštalovaný v koreni domény
# BEGIN WordPress
# Inštrukcie (riadky) medzi “BEGIN WordPress” a “END WordPress” sú
# dynamicky generované a mali by byť upravené iba pomocou filtrov WordPress.
# Akékoľvek zmeny inštrukcií medzi týmito značkami budú prepísané.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Pravidlo RewriteCond, ktoré testuje %{HTTP_REFERER} (google, bing, facebook) alebo %{HTTP_USER_AGENT} (android, iphone, mobile), nasledované pravidlom RewriteRule smerujúcim na vonkajšiu adresu, je samotné presmerovanie. Pluginy pre cache a zabezpečenie zapisujú aj vlastné bloky, označené svojím názvom: skôr než blok odstránite, porovnajte ho so zoznamom svojich pluginov.

2. Súbory PHP

WP-CLI porovná súbory jadra WordPressu a pluginov s kontrolnými súčtami, ktoré zverejňuje WordPress.org, a vypíše každý zmenený alebo pridaný súbor:

Terminál, v koreňovom adresári webu
wp core verify-checksums
wp plugin verify-checksums --all

Druhý príkaz pokrýva pluginy distribuované cez repozitár WordPress.org. Plugin kúpený u vydavateľa sa porovnáva s čerstvou kópiou stiahnutou z vášho účtu u neho. Je to častý prípad: z 540 webov malých a stredných firiem na WordPresse v našom meraní z 1. septembra 2026 nesie 66 % aspoň jeden plugin, ktorý vo verejnom repozitári nie je.

Bez WP-CLI poskytnú prvý výber dve vyhľadávania:

Terminál, v koreňovom adresári webu
find . -name "*.php" -mtime -30
find wp-content/uploads -name "*.php"

Prvé vypíše súbory PHP zmenené za posledných 30 dní, druhé súbory PHP uložené v priečinku médií, kde sú už z podstaty podozrivé (niektoré pluginy tam vkladajú prázdny index.php, ktorý je v poriadku). Dátum zmeny sa dá sfalšovať: starý súbor na nesprávnom mieste si preto prezrite tiež.

Najprv otvorte wp-config.php, index.php v koreni, functions.php a header.php aktívnej témy a priečinok wp-content/mu-plugins: pluginy v ňom sa načítavajú automaticky a v administrácii sa nedajú deaktivovať. Čo hľadať: eval(, base64_decode(, gzinflate(, str_rot13(, dlhé nečitateľné reťazce alebo window.location nasledované adresou, ktorú nepoznáte.

3. Databáza

Presmerovanie v JavaScripte sa často ukladá do obsahu stránok alebo do nastavení, kde ho žiadny súbor neukáže. WP-CLI vyhľadá reťazec vo všetkých tabuľkách WordPressu:

Terminál
wp db search "<script"
wp db search "fromCharCode"

Bez WP-CLI spustíte rovnaké vyhľadávania v phpMyAdmin, na karte SQL:

SQL (wp_ nahraďte predponou nastavenou vo wp-config.php, premenná $table_prefix)
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%';
SELECT option_name FROM wp_options WHERE option_value LIKE '%<script%';

Niektoré výsledky sú legitímne: nástroj na meranie návštevnosti, lišta cookies alebo widget, ktorý ste vložili sami. Preskúmajte všetko, čo nezodpovedá ničomu, čo ste inštalovali, najmä skript, ktorý skladá adresu z kódov znakov.

4. Nastavenia adresy a účty

V ponuke Nastavenia > Všeobecné musia polia „Adresa (URL) WordPress-u“ a „Adresa stránky (URL)“ obsahovať vašu doménu. Rovnaké hodnoty sa dajú vynútiť vo wp-config.php konštantami WP_HOME a WP_SITEURL: skontrolujte obe miesta.

Terminál
wp option get home
wp option get siteurl
wp user list --role=administrator

Keď sú konštanty definované, prvé dva príkazy vrátia ich hodnotu. Posledný vypíše administrátorov s dátumom registrácie; v administrácii získate rovnaký zoznam v ponuke Používatelia, s filtrom na rolu Administrátor. Účet, ktorý nikto nepozná, zmažte a jeho obsah priraďte legitímnemu účtu.

Odstrániť presmerovanie, potom aj prístup, ktorým prišlo

Zmazaním riadku, ktorý presmerováva, zastavíte príznak. Prístup, ktorý útočník použil, zostáva otvorený, kým ho nenájdete, a presmerovanie sa v priebehu niekoľkých dní vráti. Poradie, ktoré funguje:

  1. Nahraďte súbory jadra čerstvou kópiou: zmažte priečinky wp-admin a wp-includes a spustite wp core download --skip-content --force, ktorý jadro prepíše bez toho, aby sa dotkol vašich pluginov, tém a médií. Príkaz prepisuje existujúce súbory, ale pridané súbory ponechá: preto sa oba priečinky mažú najprv a preto neznáme súbory PHP v koreni odstránite ručne.
  2. Preinštalujte tému a každý plugin z ich oficiálneho zdroja a zmažte tie, ktoré web už nepoužíva, vrátane deaktivovaných: ich súbory na serveri zostávajú.
  3. Odstráňte cudzie súbory PHP z wp-content/uploads, pravidlá pridané do .htaccess a skripty nájdené v databáze.
  4. Skontrolujte naplánované úlohy príkazom wp cron event list: úloha s neznámym názvom môže kód vložiť znova.
  5. Aktualizujte WordPress, tému a pluginy.
  6. Zopakujte testy zo začiatku, z viacerých zariadení a počas niekoľkých dní.

Ak web uchováva osobné údaje (formuláre, zákaznícke účty, objednávky), poznačte si čas, keď ste napadnutie zistili. V Európskej únii všeobecné nariadenie o ochrane údajov (GDPR) ukladá oznámiť porušenie ochrany osobných údajov dozornému orgánu najneskôr do 72 hodín po tom, čo sa o ňom prevádzkovateľ dozvedel, s výnimkou prípadov, keď nie je pravdepodobné, že porušenie povedie k riziku pre práva a slobody fyzických osôb.

Google a to, čo vidia vaši návštevníci

Keď Google presmerovanie odhalí, Chrome môže pred otvorením webu zobraziť červené upozornenie „Nebezpečný web“ a Google môže pod váš výsledok vyhľadávania pripísať „Tento web je možno hacknutý“. Časť Problémy so zabezpečením v Google Search Console ukazuje, čo bolo zistené a na ktorých adresách. Keď je web vyčistený, požiadajte v tej istej časti o kontrolu, ktorá spustí overenie.

Po presmerovaní: stránka prevzatá a udržiavaná

Odstránené presmerovanie nechá otvorenú otázku: kto sa o stránku postará potom? Simafri prevezme vašu stránku na WordPresse, vráti ju online na základ, ktorý hostujeme, zabezpečujeme a udržiavame aktuálny, a potom sa o ňu stará, mesiac po mesiaci. Doména aj obsah zostávajú vaše.

Chcem odovzdať svoju stránku

Časté otázky

Prečo môj web na WordPresse presmerováva len na mobile?

Vložený kód číta User-Agent prehliadača a presmerováva len telefóny. Kto web spravuje, často z počítača, presmerovanie nevidí. Otestujte web z telefónu na mobilných dátach alebo príkazom curl s identifikátorom mobilného prehliadača.

Odstráni preinštalovanie WordPressu presmerovanie?

Preinštalovanie jadra prepíše súbory WordPressu, ale súbory, ktoré tam mohol pridať útočník, ponechá. Databáza, téma, pluginy a priečinok médií zostanú, ako sú, a práve tam sa presmerovanie a prístup útočníka nachádzajú najčastejšie. Čerstvé jadro je jeden krok čistenia, ktorý dopĺňa databáza, pluginy, účty a heslá.

Web bol vyčistený, prečo sa presmerovanie vracia?

Pretože prístup, ktorým bolo vložené, tam stále je: pridaný administrátorský účet, súbor PHP skrytý medzi médiami, naplánovaná úloha, zraniteľný plugin. Každý z nich umožní kód po vyčistení vložiť znova. Skontrolujte účty, priečinok wp-content/uploads, naplánované úlohy a verzie pluginov a potom znova zmeňte heslá.

Ako zistím, či Google presmerovanie zaznamenal?

Otvorte Google Search Console a časť Problémy so zabezpečením: uvádza zistené problémy a príklady adries. Ak web v Search Console ešte nie je overený, overenie záznamom DNS pokryje celú doménu.

Kontaktujte nás