Jak ochránit svůj web před spamem z kontaktních formulářů

Kontaktní formulář na vašem webu může být bránou pro spamy – stačí jedna nechráněná funkce, a vaše stránky se stane nástrojem pro masivní rozesílání nevyžádané pošty. Odborníci odhalili, jak jednoduchá volba ‚Odeslat kopii sobě‘ vygenerovala 149 700 nevyžádaných emailů a jak tomu zabránit i vy.

Jak spameři zneužili jednoduchou funkci

Spamová vlna začala jako běžná serverová havárie – klient hlásil, že jeho web zpomalil, CPU běželo na maximum a proces dovecot/lmtp žral veškeré zdroje. Ukázalo se, že za tím stál automatizovaný útok: na serveru viselo 149 700 neodeslaných emailů, které měly být rozeslány jako spam. A vše začalo u jednoho detailu.

Pachatelé zneužili funkci ‚Odeslat kopii sobě‘ v kontaktním formuláři. Jak to fungovalo? Boty automaticky vyplňovaly formulář, ale místo reálného obsahu posílaly spam. Díky funkci ‚kopie‘ pak každé odeslání generovalo dva emaily: jeden pro vlastníka webu (normální chování formuláře) a druhý – s předmětem ‚Kopie:‘ – přímo spámerům. Ti tak získali plná práva na rozeslání obsahu bez jakékoli kontroly.

Problém zhoršovala absence ochrany před boty – ani CAPTCHA nebylo nasazeno, a i když by bylo, spámeři by mohli emaily posílat ručně. Útok byl tak efektivní, že postihl desítky webů na stejném hostingu najednou.

Proč je to nebezpečné i pro vaše stránky

Tento případ ukazuje, že i zdánlivě nevinné funkce mohou stát za vážnými problémy. Pro vaši firmu nebo školu to znamená:

  • Ztrátu reputace: Server může být označován jako zdroj spamu a vaše emaily skončí ve spamových schránkách.
  • Technické potíže: Masivní odesílání emailů přetěžuje server, web zpomalí nebo zcela padne.
  • Ztrátu dat: Někteří spámeři zneužívají formuláře k odesílání škodlivého obsahu nebo phishingových zpráv z vaší domény.
  • Právní riziko: Pokud vaše stránky rozesílají nevyžádanou poštu, hrozí sankce podle zákona o elektronických komunikacích.

Důležité je, že útočníci nevyžadují žádné složité hackerské triky – stačí nechráněný formulář a automatizované boty. Většina systémů (Joomla, WordPress i jiné) má takové funkce standardně, ale často nejsou dostatečně zabezpečeny.

Jak útočníci postupují – a jak je poznat

Spámeři využívají opakující se vzorce. Hledejte následující varovné signály:

  • Náhlý nárůst emailové fronty: Pokud najednou vidíte stovky emailů v odchozí poště, i když jste nic neodesílali.
  • Dvojité odesílání: Stejný obsah s předmětem ‚Kopie:‘ nebo ‚Re:‘, který jste neodeslali.
  • Vysoká CPU spotřeba: Procesy jako dovecot, exim nebo php-fpm běží na 100 %.
    Zkontrolujte to v panelu hostingu (např. cPanel) pod ‚Statistiky serveru‘.
  • Stížnosti na spam: Od uživatelů nebo poskytovatele emailových služeb (Gmail, Seznam atd.).
  • Podivné IP adresy: Desítky identických požadavků z jedné IP za sekundu (zjistíte v logu serveru).

Pokud váš web používá kontaktní formulář, zkontrolujte, zda obsahuje funkci ‚kopie‘. V Joomla je to například v rozšíření RSForm! nebo JContact, ve WordPressu v pluginu Contact Form 7 nebo WPForms. Pokud ji nepotřebujete, odstraňte ji hned.

Co s tím udělat – krok za krokem

Zabezpečení kontaktního formuláře nevyžaduje složité programování. Postupujte podle těchto kroků:

  1. Odstraňte funkci ‚kopie sobě‘:
    • V Joomla: V nastavení formuláře (např. v RSForm!) vyberte ‚Disable self-copy‘.
    • Ve WordPressu: V pluginu Contact Form 7 odeberte řádek [your-email] z pole ‚To‘.
    • V jiných systémech: Vyhledejte nastavení ‚Bcc‘ a zakážte ho.
  2. Přidejte CAPTCHA:
    • V Joomla: Nainstalujte plugin reCAPTCHA nebo hCaptcha.
    • Ve WordPressu: Použijte plugin Really Simple CAPTCHA nebo WPForms with CAPTCHA.
    • Zkontrolujte, že CAPTCHA funguje – někdy je zakomponováno do formuláře, ale neaktivní.
  3. Omezte počet odeslaných formulářů:
    • Nastavte limit (např. 5 formulářů za minutu) v panelu hostingu nebo pomocí pluginu Limit Login Attempts (WordPress) nebo JACL Protector (Joomla).
    • V cPanelu: Vyhledejte ‚ModSecurity‘ a povolte pravidla proti spamovým aktivitám.
  4. Zabezpečte odesílání emailů:
    • Přidejte SPF záznam do DNS (např. v Cloudflare nebo u registrátora domény).
      Příklad záznamu: v=spf1 include:_spf.google.com ~all.
    • V panelu hostingu (WHM/cPanel) povolte filtry SpamAssassin:
      • Jděte do ‚Service Configuration‘ → ‚Exim Configuration Manager‘.
      • Zaškrtněte ‚Do not forward mail to external recipients if it matches the Apache SpamAssassin™ internal spam_score setting‘.
  5. Monitorujte server:
    • Nastavte upozornění na vysokou CPU spotřebu nebo velký počet emailů v panelu hostingu.
    • Pravidelně kontrolujte logy (např. /var/log/exim_mainlog) na podezřelé aktivity.

Pokud jste již obětí útoku, okamžitě:

  • Zakážte kontaktní formulář.
  • Vyčistěte odchozí emailovou frontu (v cPanelu pod ‚Email Accounts‘ → ‚Manage Email‘).
  • Ohláste incident hostiteli – mohou dočasně pozastavit odesílání z vaší domény.

Zdroj: Sucuri – Contact Form Spam Attack: An Innocent Feature Caused a Massive Problem (17. 10. 2025)

Článek vychází z uvedeného zdroje.