Prestashop – Spam cu mailuri din Rusia pe formularul de contact

Cred că una dintre cele mai nasoale probleme la Prestashop este spamul generat din formularul de contact sau din câmpul de mesaje de la comenzi. Mă trezeam pe unele siteuri și cu câteva zeci de mailuri pe zi venite din Rusia. Era absolut enervant. Și nici nu puteam da disable la formular, pentru că existau pe acele siteuri clienți care foloseau acea funcționalitate. Apoi mă gândeam să fac un GeoIp block, numai că am observat faptul că, deși mailurile erau scrise în rusă, IPurile de pe care erau trimise, variau de la Nigeria, la Germania, inclusiv România mai târziu.

mail spam Prestashop

Prima soluție a fost schimbarea url-ului de contact.

Dar a funcționat fix două săptămâni! Dar două săptămâni frumoase :))) Apoi mailurile au început să vină din ce în ce mai multe. La un moment am șters câteva ore formularul de contact cu totul. Da, pur și simplu am golit fișierul contact-form.tpl, am șters cacheul și am lăsat să vă ce se întâmplă. Iar spamurile nu au încetat. Nu am stat să caut o explicație pentru asta, cu toate că am câteva bănuieli.

Apoi am folosit Google recaptcha.

N-am mai stat foarte mult pe gânduri și am zis că următoarea încercare să fie introducerea recaptcha-ului de la Google. Și pe scurt… a mers! Voi posta direct ce e de făcut:

1. Se creează o intrare nouă aici: https://www.google.com/recaptcha/

2. Se adaugă în header (fișierul header.tpl din temă) următoare linie:

<script src='https://www.google.com/recaptcha/api.js'></script>

3. În contact-form.tpl se adaugă linia de mai jos, fix înainte de </form>

<div class="g-recaptcha" data-sitekey="[public Google key]"></div>

4. În fișierul /controllers/front/ContactController.php fix după linia : $this->errors[] = Tools::displayError(‘Bad file extension’);

} else if (!($gcaptcha = (int)(Tools::getValue('g-recaptcha-response')))){

$this->errors[] = Tools::displayError('Captcha not verified');

}

Pot să garantez că funcționează și merge super bine de o bucată bună de timp. Și daaaa, probabil că asta ar fi trebuit să fie soluția cea dintâi 🙂

 

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *