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ó.
Tartalomjegyzék
- A probléma régebbi, mint gondolnád
- Mitől ilyen könnyen kihasználhatók a kapcsolatfelvételi űrlapok
- A kapcsolatfelvételi űrlap e-mailjeinek helyes küldési módja
- A rate limiting nem opcionális
- A CAPTCHA kompromisszum, nem megoldás
- Mikor érdemes külső űrlapszolgáltatást használni
- A DMARC-probléma
- 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)?
- Fő tanulságok
- FAQ
- 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:
- Beküldi az űrlapot egy áldozat e-mail-címével a „from” mezőben
- A szervered engedelmesen elküld egy e-mailt az áldozat címével a
Fromfejlécben - 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
- 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
- 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:
- Megfelelő e-mail-fejlécek (nem alkuképes)
- Rate limiting (nem alkuképes)
- Honeypot mező (könnyű nyereség, hátrány nélkül)
- 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
Fromfejlécbe. Használd helyette aReply-Tofejlé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
- OWASP: Email Header Injection — Részletes magyarázat arról, hogyan használhatók ki a kapcsolatfelvételi űrlapok e-mail-hamisításra.
- RFC 5322: Internet Message Format — Az e-mail-fejléceket, köztük a
FromésReply-Tomezőket meghatározó technikai szabvány. - DMARC.org: Overview — Hivatalos forrás a DMARC-házirendek megértéséhez és bevezetéséhez.
- Spamhaus: Domain Blocklists — Ellenőrizheted, hogy a domainedet megjelölték-e spam miatt, és megértheted, hogyan működnek a tiltólisták.


