DNS, Email & Deliverability

Miért a kapcsolatfelvételi űrlapod a legnagyobb spamkockázatod

A legtöbb kapcsolatfelvételi űrlap úgy van beállítva, hogy közvetlenül a felhasználói bevitelből küldjön e-mailt. Emiatt triviálisan kihasználható.

The Wux Webtools Team The Wux Webtools Team 11 min olvasás AI-támogatott, ember által ellenőrzött
Abstract illustration of a contact form with warning symbols representing spam vulnerability
Tartalomjegyzék
  1. A probléma régebbi, mint gondolnád
  2. Mitől ilyen könnyen kihasználhatók a kapcsolatfelvételi űrlapok
  3. A kapcsolatfelvételi űrlap e-mailjeinek helyes küldési módja
  4. A rate limiting nem opcionális
  5. A CAPTCHA kompromisszum, nem megoldás
  6. Mikor érdemes külső űrlapszolgáltatást használni
  7. A DMARC-probléma
  8. Mi a helyzet a [sütikhez való hozzájárulással és az űrlapkövetéssel](/hu/blog/2026-05-02-what-changed-for-cookies-in-2026-and-what-to-do-about-it)?
  9. Fő tanulságok
  10. FAQ
  11. Források

A probléma régebbi, mint gondolnád

A kapcsolatfelvételi űrlapok már a 2000-es évek eleje óta spamcsatornának számítanak, de a probléma súlyosbodott, ahogy az e-mail-szolgáltatók szigorították a hitelesítési követelményeiket. A legtöbb kapcsolatfelvételi űrlap még mindig ugyanúgy épül fel: a felhasználó kitölt egy űrlapot, a szervered e-mailt küld a felhasználó címét használva a From fejlécben, te pedig várod a válaszokat.

Ez tankönyvi e-mail-hamisítási sérülékenység. A spammerek az űrlapodat arra használhatják, hogy olyan e-maileket küldjenek, amelyek látszólag bármely általuk választott címről érkeznek, miközben a szervered IP-címén keresztül haladnak. Ha elég sok spam megy ki így, a domainedet megjelölik, és a legitim tranzakciós e-mailjeid nem jutnak el a beérkező levelek közé.

A javítás egyszerű, de a legtöbb útmutató még mindig rosszul csinálja.

Mitől ilyen könnyen kihasználhatók a kapcsolatfelvételi űrlapok

Egy tipikus kapcsolatfelvételi űrlap három mezőt fogad: név, e-mail és üzenet. A szerveroldali kezelő ezt az e-mail-címet közvetlenül egy kimenő SMTP-üzenet From fejlécébe teszi. Ez kényelmes a válaszokhoz — elég megnyomni a „reply” gombot a postafiókodban —, de egyben ajándék a spammereknek.

Ez történik, amikor egy spammer megtalálja az űrlapodat:

  1. Beküldi az űrlapot egy áldozat e-mail-címével a „from” mezőben
  2. A szervered engedelmesen elküld egy e-mailt az áldozat címével a From fejlécben
  3. Az áldozat levelezőszervere azt látja, hogy az e-mail állítólag az ő domainjéről jön, de a te IP-címedről származik
  4. Ha a domaineden nincsenek megfelelő SPF/DKIM/DMARC rekordok (vagy akár ha vannak is), az e-mail még mindig átjuthat, mert sok szerver engedékeny a kapcsolatfelvételi űrlapok forgalmával
  5. Az áldozat olyan spamet kap, amely látszólag a saját címéről érkezik, vagy a domainedet megjelölik hamisítás miatt

Ez nem elméleti támadás. Folyamatosan megtörténik. Ha működtetsz kapcsolatfelvételi űrlapot, és soha nem nézted meg a levelezőszervered naplóit, valószínűleg már most is használják erre.

A kapcsolatfelvételi űrlap e-mailjeinek helyes küldési módja

A megoldás az, hogy soha ne tegyél felhasználói bevitelt a From fejlécbe. Ehelyett:

  • From: [email protected] (vagy bármely cím, amelyet te kezelsz)
  • Reply-To: A felhasználó által megadott e-mail-cím
  • Subject: Ha szeretnéd, szerepelhet benne a felhasználó neve, de az e-mail-címe soha
  • Body: Tartalmazza az összes űrlapadatot, egyértelmű címkékkel

Így a szervered csak olyan címekről küld e-mailt, amelyek a tiéd, és megfelelően hitelesítve vannak. Amikor a postafiókodban megnyomod a „reply” gombot, az továbbra is a felhasználóhoz megy — pontosan erre való a Reply-To. A spammerek viszont nem tudják az űrlapodat tetszőleges címek megszemélyesítésére használni.

A legtöbb e-mail-könyvtár ezt alapból támogatja. PHP PHPMailer esetén:

$mail->setFrom('[email protected]', 'Contact Form');
$mail->addReplyTo($_POST['email'], $_POST['name']);

Python smtplib és email.mime használatával:

msg['From'] = '[email protected]'
msg['Reply-To'] = form_data['email']

Node.js-ben Nodemailerrel:

const mailOptions = {
  from: '[email protected]',
  replyTo: req.body.email,
  // ...
};

Ha a kapcsolatfelvételi űrlapod jelenleg felhasználói bevitelt tesz a From fejlécbe, ez egy egysoros javítás. Csináld meg ma.

A rate limiting nem opcionális

Még megfelelő fejléc-higiénia mellett is spamcsatorna marad egy védelem nélküli kapcsolatfelvételi űrlap. A spammerek százszor is beküldik az űrlapodat különböző üzenettörzsekkel, és a postafiókod megtelik szeméttel.

Több szinten van szükséged rate limitingre:

  • IP-címenként: Legfeljebb 5 beküldés óránként ugyanarról az IP-ről
  • E-mail-címenként: Legfeljebb 3 beküldés naponta ugyanarról az e-mail-címről
  • Globálisan: Legfeljebb 50 beküldés óránként az összes felhasználótól együtt (a forgalmad alapján igazítsd)

A rate limitingnek az alkalmazáskódban van a helye, nem csak a webszerver konfigurációjában. Az Nginx és az Apache rate limiting segíthet, de kérésszinten működik, és nem tud az e-mail-címekről vagy az űrlapspecifikus visszaélési mintákról.

Ha keretrendszert használsz, valószínűleg van olyan rate-limiting middleware, amelyet be tudsz illeszteni. Ha nulláról építkezel, egy egyszerű Redis számláló lejáró kulcsokkal jól működik:

key = f"contact_form:{ip_address}"
count = redis.incr(key)
if count == 1:
    redis.expire(key, 3600)  # 1 hour
if count > 5:
    return error("Rate limit exceeded")

Ez nem golyóálló — a spammerek váltogathatják az IP-címeket —, de jelentősen megemeli a visszaélés költségét.

A CAPTCHA kompromisszum, nem megoldás

A Google reCAPTCHA v3 láthatatlan, és viselkedés alapján pontozza a felhasználókat, ami ideálisnak hangzik. A gyakorlatban azonban gyakrabban blokkol legitim felhasználókat, mint várnád, különösen VPN-t, Tort vagy megosztott vállalati hálózatot használókat.

A reCAPTCHA v2 (az „I'm not a robot” jelölőnégyzet) megbízhatóbb, de súrlódást ad hozzá. A honeypot mezők — rejtett űrlapmezők, amelyeket emberek nem töltenek ki, botok viszont igen — zéró felhasználói hatással fogják meg az egyszerűbb botokat, de bármely komolyabb spammer számára triviális megkerülni őket.

A legjobb megközelítés rétegzett:

  1. Megfelelő e-mail-fejlécek (nem alkuképes)
  2. Rate limiting (nem alkuképes)
  3. Honeypot mező (könnyű nyereség, hátrány nélkül)
  4. CAPTCHA csak akkor, ha a fentiek után még mindig jelentős mennyiségű spam érkezik

Ha mégis hozzáadsz CAPTCHA-t, használj reCAPTCHA v3-at alacsony küszöbértékkel (0,5 vagy alacsonyabb), és adj v2-es tartalékmegoldást azoknak a felhasználóknak, akik gyengén pontozódnak. Így a legtöbb felhasználó számára alacsony marad a súrlódás, miközben a botokat továbbra is blokkolod.

Mikor érdemes külső űrlapszolgáltatást használni

Ha kis webhelyet üzemeltetsz, és nem akarsz űrlapinfrastruktúrát karbantartani, a külső szolgáltatások, például a Formspree, a Tally vagy a Netlify Forms mindezt kezelik helyetted. Rate limitinget alkalmaznak, validálnak, és a saját domainjeikről küldenek e-mailt, így a hírneved tiszta marad.

A kompromisszum az, hogy felhasználói adatokat küldesz egy harmadik félnek, ami ütközhet az adatvédelmi szabályzatoddal vagy a GDPR-kötelezettségeiddel. Az ügyféloldali adatfeldolgozás egyre erősödő trend az adatvédelemre érzékeny csapatoknál, de a kapcsolatfelvételi űrlapok természetükből adódóan szerveroldali feldolgozást igényelnek — nem tudsz e-mailt küldeni a böngészőből anélkül, hogy hitelesítő adatokat tennél közzé.

Ha érzékeny megkereséseket kezelsz (jogi, orvosi, pénzügyi), valószínűleg saját űrlapinfrastruktúrát kell működtetned. Minden más esetben egy külső szolgáltatás észszerű választás.

A DMARC-probléma

Még ha kijavítod is a kapcsolatfelvételi űrlap fejléceit, nem vagy biztonságban, ha a domaineden nincs DMARC-házirend. A DMARC megmondja a fogadó levelezőszervereknek, mit tegyenek azokkal az e-mailekkel, amelyek nem mennek át az SPF- vagy DKIM-ellenőrzéseken. Enélkül a spammerek továbbra is küldhetnek olyan e-mailt, amely látszólag a domainedről érkezik, még akkor is, ha nem a szervereidet használják.

A DMARC beállítása túlmutat ennek a cikknek a keretein, de ha komolyan veszed az e-mail-hírnevet, nem alkuképes. Kezdd csak megfigyelésre szolgáló házirenddel (p=none), majd fokozatosan lépj tovább a p=quarantine vagy p=reject felé, ahogy ellenőrzöd, hogy a legitim e-mailjeid megfelelően hitelesítettek.

Mi a helyzet a sütikhez való hozzájárulással és az űrlapkövetéssel?

Ha a kapcsolatfelvételi űrlapod analitikát vagy marketingpixeleket használ a beküldések követésére, valószínűleg vonatkoznak rád a GDPR és az ePrivacy szabályai. A legtöbb kapcsolatfelvételi űrlapnak nincs szüksége követésre — már tudod, hogy valaki beküldte az űrlapot, mert megkaptad az e-mailt —, de ha például Facebook Pixel vagy Google Analytics eseményeket használsz, kifejezett hozzájárulásra van szükséged, mielőtt ezek a szkriptek betöltődnek.

A legegyszerűbb megközelítés az, ha egyáltalán nem követed a kapcsolatfelvételi űrlap beküldéseit. Ha mindenképpen követned kell őket, csak azután töltsd be a követőszkripteket, hogy a felhasználó hozzájárult, és győződj meg róla, hogy a hozzájárulási bannered megfelel az előírásoknak.

Fő tanulságok

  • Soha ne tegyél felhasználó által megadott e-mail-címeket a From fejlécbe. Használd helyette a Reply-To fejlécet.
  • A rate limiting kötelező. Alkalmazásszinten valósítsd meg, ne csak a webszerveren.
  • A honeypot mezők ingyenes nyereséget jelentenek. A CAPTCHA legyen végső megoldás.
  • A külső űrlapszolgáltatások észszerű választást jelentenek kis webhelyek számára, de adatvédelmi kompromisszumokat hoznak be.
  • Ha bármilyen e-mailt küldesz a domainedről, szükséged van DMARC-házirendre.

FAQ

Q: Egyszerűen letilthatom a kapcsolatfelvételi űrlapot, és használhatok helyette mailto linket?

A: Megteheted, de a mailto linkek felfedik az e-mail-címedet a scraperek előtt, és elveszíted a strukturált adatok gyűjtésének lehetőségét. Ha a spam kezelhetetlen, a mailto link jobb, mint egy hibás kapcsolatfelvételi űrlap, de az űrlap kijavítása mindkettőnél jobb.

Q: Mi van akkor, ha legitim okból a felhasználó címéről kell e-mailt küldenem?

A: Szinte biztosan nincs rá szükséged. Ha úgy gondolod, hogy mégis, valószínűleg egy munkafolyamat-problémát próbálsz megoldani (például a válaszok útválasztását), amelyet a Reply-To már megold. Ha valóban tetszőleges címekről kell e-mailt küldened, akkor megfelelő hitelesítéssel rendelkező dedikált e-mail-szolgáltatásra van szükséged, nem kapcsolatfelvételi űrlapra.

Q: Honnan tudom, hogy a kapcsolatfelvételi űrlapommal már visszaélnek-e?

A: Nézd meg a levelezőszervered naplóit a kimenő SMTP-kapcsolatokra. Ha nagy mennyiségű kimenő e-mailt látsz olyan címekre, amelyeket nem ismersz fel, vagy ha a domainedet spamadatbázisok, például a Spamhaus megjelölték, valószínűleg relayként használnak. Az olyan eszközök, mint az MXToolbox, ellenőrizni tudják a domained hírnevét.

Q: Biztonságos ingyenes CAPTCHA-szolgáltatást használni?

A: A Google reCAPTCHA ingyenes és széles körben használt, de felhasználói adatokat küld a Google-nek, ami ütközhet az adatvédelmi szabályzatoddal. A hCaptcha adatvédelem-központú alternatíva, amely nem tanít AI-modelleket a felhasználóidon. A Cloudflare Turnstile egy másik lehetőség, amely kevésbé tolakodó, mint a hagyományos CAPTCHA-k.

Q: Mi a különbség az SPF, a DKIM és a DMARC között?

A: Az SPF felsorolja, mely levelezőszerverek küldhetnek e-mailt a domainedről. A DKIM kriptográfiailag aláírja a kimenő e-maileket, hogy a címzettek ellenőrizhessék, nem módosították őket. A DMARC összeköti ezeket, és megmondja a címzetteknek, mit tegyenek, ha egy e-mail nem megy át az SPF- vagy DKIM-ellenőrzéseken. A megfelelő e-mail-hitelesítéshez mindháromra szükséged van.

Források

Five-step flow showing how a spammer abuses a contact form by putting a victim email in the From header, causing spoofed mail to pass through your server
InfographicHow a contact form turns into a spoofing relay — A simple five-step chain shows how one unsafe header turns your form into a spam relay
Side-by-side comparison of unsafe and safe contact form email headers, showing user email in From on the left and Reply-To on the right
InfographicWrong vs right contact form email headers — The safe pattern is simple: your domain in From, user input only in Reply-To
Checklist-style security stack for contact forms with exact rate limits, honeypot, and CAPTCHA fallback thresholds
InfographicLayered defenses for contact form spam — Start with headers and rate limits, then add honeypots, and only use CAPTCHA as a fallback

Gyakran ismételt kérdések

Egyszerűen letilthatom a kapcsolatfelvételi űrlapot, és használhatok helyette mailto linket?
Megteheted, de a mailto linkek felfedik az e-mail-címedet a scraperek előtt, és elveszíted a strukturált adatok gyűjtésének lehetőségét. Ha a spam kezelhetetlen, a mailto link jobb, mint egy hibás kapcsolatfelvételi űrlap, de az űrlap kijavítása mindkettőnél jobb.
Mi van akkor, ha legitim okból a felhasználó címéről kell e-mailt küldenem?
Szinte biztosan nincs rá szükséged. Ha úgy gondolod, hogy mégis, valószínűleg egy munkafolyamat-problémát próbálsz megoldani (például a válaszok útválasztását), amelyet a `Reply-To` már megold. Ha valóban tetszőleges címekről kell e-mailt küldened, akkor megfelelő hitelesítéssel rendelkező dedikált e-mail-szolgáltatásra van szükséged, nem kapcsolatfelvételi űrlapra.
Honnan tudom, hogy a kapcsolatfelvételi űrlapommal már visszaélnek-e?
Nézd meg a levelezőszervered naplóit a kimenő SMTP-kapcsolatokra. Ha nagy mennyiségű kimenő e-mailt látsz olyan címekre, amelyeket nem ismersz fel, vagy ha a domainedet spamadatbázisok, például a Spamhaus megjelölték, valószínűleg relayként használnak. Az olyan eszközök, mint az MXToolbox, ellenőrizni tudják a domained hírnevét.
Biztonságos ingyenes CAPTCHA-szolgáltatást használni?
A Google reCAPTCHA ingyenes és széles körben használt, de felhasználói adatokat küld a Google-nek, ami ütközhet az adatvédelmi szabályzatoddal. A hCaptcha adatvédelem-központú alternatíva, amely nem tanít AI-modelleket a felhasználóidon. A Cloudflare Turnstile egy másik lehetőség, amely kevésbé tolakodó, mint a hagyományos CAPTCHA-k.
Mi a különbség az SPF, a DKIM és a DMARC között?
Az SPF felsorolja, mely levelezőszerverek küldhetnek e-mailt a domainedről. A DKIM kriptográfiailag aláírja a kimenő e-maileket, hogy a címzettek ellenőrizhessék, nem módosították őket. A DMARC összeköti ezeket, és megmondja a címzetteknek, mit tegyenek, ha egy e-mail nem megy át az SPF- vagy DKIM-ellenőrzéseken. A megfelelő e-mail-hitelesítéshez mindháromra szükséged van.

Források és további olvasmányok

  1. OWASP: Email Header Injection
  2. RFC 5322: Internet Message Format
  3. DMARC.org: Overview
  4. Spamhaus: Domain Blocklists
A szerzőről
The Wux Webtools Team

Utolsó frissítés:

Tovább olvasom