Email címek elkódolása az email-ekbe helyezett linkekben
2022.11.02 — Posted by Webb & Flow
Az email címeket érdemes elkódolva berakni a linkekbe abban az esetben, ha a cél oldalon meg akarjuk akadályozni azt, hogy bárki bármilyen email címet beírva az url-be más nevében tudjon megtenni valamit (például email listára fel/leiratkozás, stb).
Emiatt a ForwardHub be tudja a címzett email címét egy elkódolt formában rakni az emailekbe. A kódoláshoz szükség van egy kulcsra, aminek a segítségével készíti a kódot.
Ez a kódolás az aláírásos elvet követi, ami azt jelenti, hogy maga az email cím visszafejthető a kódból, azonban a kód tartalmaz egy aláírást is, amit csak abban az esetben lehet helyesen létrehozni, ha ismerjük a kulcsot.
Kulcs beállítások
A kulcsot a Config / Project setting menü alatt lehet a Technical fülön beállítani:
A rendszer mindenképpen generál egy alapértelmezett kulcsot a projekthez, azonban ezt érdemes megváltoztatni. A kulcs formátumára nincs megkötés, azonban érdemes a következő elveket betartani:
- minimum 16 karakter hozzú
- tartalmaz több nagybetűt
- tartalmaz több kisbetűt
- tartalmaz több számot
Fontos, hogy ez a kulcs ne kerüljön illetéktelenek kezébe, és csak azok ismerjék, akiknek feltétlenül szükségük van rá.
Template beállítások
A template-ekbe egyszerűen a {TARGETHASHED} változót kell a {TARGET} helyére írni akkor, ha az elkódolt értéket akarjuk a levélbe rakni az adott helyen.
Kód ellenőrzése
Mivel a cél az, hogy csak olyan tudjon egy adott email címhez egy kódot generálni, aki ismeri a kódoló kulcsot, ezért annak a rendszernek, ami megkapja a kódot (például egy url query paraméter formájában), tudnia kell validálnia a kapott kódot. Ehhez az adott rendszernek is ismernie kell a kódoló kulcsot.
A következő, PHP nyelven írt példa kód megmutatja az algoritmust, amivel ezt meg lehet tenni:
// az email kód az emailHash query paraméterben jön: https://example.com/index.php?emailHash=123456
// a kódoló kulcs a $salt változóban található
$salt = 'ezEgyEmai1K0d0l0Ku1cs';
$emailHash = $_GET['emailHash'];
$email = base64_decode(substr($emailHash, 32));
$md5Hash = md5($email.'{'.$salt.'}');
$isValid = ($md5Hash == substr($emailHash, 0, 32));
Kód generálása
Amennyiben bármi miatt szükség van külső rendszerben is ennek a kódnak a generálására, a következő, PHP nyelven írt kód alapján meg lehet azt tenni:
// a kódoló kulcs a $salt változóban található
// a kódolandó email a $email változóban található
$salt = 'ezEgyEmai1K0d0l0Ku1cs';
$email = 'email@example.com';
$emailHash = md5($email.'{'.$salt.'}').base64_encode($email);