blog
user
26 062020

Sklep internetowy prestashop w wersji 1.6.x posiada słabo zabezpieczony formularz kontaktowy. Podatność polega na tym, że spam boty wykorzystują formularz aby rozsyłać spam. Spam trafia na skrzynkę właściciela sklepu internetowego. Podatność została oznaczona numerem PSCSX-9132. Jej rozwiązanie zostało zaproponowane jeszcze w 2017r na github. Polegało na utworzeniu ciasteczka (cookie) za każdym razem jak formularz jest generowany. Poprawka dotyczyła plików: ContactController.php oraz contact-form.tpl.

Dodatkowym zabezpieczeniem formularza mogło być dodanie Google reCaptcha. Niestety w praktyce zdarzają się odrzucenia poprawnych adresów e-mail co ostatecznie zniechęca właścicieli sklepów internetowych prestashop do stosowania tego rozwiązania.

Poprawka 8168 okazała się nie wystarczająca. Spam boty znalazły obejście wprowadzonego zabezpieczenia. Wystarczyło zapisywać wygenerowany plik cookie i przekazywać jego wartość podczas spamowania formularza. Spam bot raz otwierał stronę kontaktową zapisywał wartość contactKey przekazywaną w formularzu

<input type="hidden" name="contactKeyPresta" value="{$contactKey}" />

Rozwiązaniem tego problemu jest czyszczenie ciasteczka za każdym razem kiedy zapytanie zostanie poprawnie wysłane. Aby to zrobić należy do pliku ContactController.php dodać kod

$this->context->cookie->__unset('contactFormKey');

przed linią 210 zawierającą kod

$this->context->smarty->assign('confirmation', 1);

Rozwiązanie to pomoże przynajmniej częściowo. Spam bot musiałby za każdym razem otwierać stronę kontaktową aby pobierać nową wartość pliku cookie. Czekamy na modernizację spam botów :D

 

Nasze newsy

Śledź nasze aktualności.

blog
user
16 042024

Wiosenne pożądki na serwerze

Wiosenne uporządkowanie zasobów na serwerze.

blog
user
13 072023

Iteracja dużej ilości danych w Laravel Eloquent

Jak poprawnie iterować dużą ilość danych w Laravel Eloquent

blog
user
29 032023

Wtyczka do Octobercms blokująca ip

Nowa wtyczka do Octobercms zwiększająca bezpieczeństwo stron www.

logo

Masz pytania? Skontaktuj się