SPAM z formularza kontaktowego PrestaShop 1.6

3 marca 2018 | Po godzinach - Wszystkie wpisy, Poradnik | 6 Komentarze

Spamerzy non stop kombinują jak tu wykorzystać do swoich niecnych celów formularze dostępne na stronach internetowych. Czyli jak zasypać innych wirtualnymi śmieciami.

Tak tak, śmieciami, ponieważ z reguły oferty spamerów tak mi pasują jak te w stylu „kup pan cegłę”. Kto nie wie skąd ten cytat polecam stare polskie kino „Ewa chce spać”. Niesamowite dialogi i warszawski slang.

blank

Jest tam scenka z opryszkiem, który szkolony był jak odpowiednio podejść osobę na ulicy i niekoniecznie chodziło o podejście siłowe, czyli cegła nie stanowiła jedynego atutu. Liczyło się odpowiednie, kulturalne podejście do „klienta”. Opryszek bardzo elokwentnie przedstawił propozycję nie do odrzucenia: „Panie szanowny! Kup pan te cegłę! Odpalasz pan stówkę ocalasz pan główkę!”. Czyli dobijając do brzegu, chodzi mi o to, że oferta spamerów jest mi całkiem zbyteczna, tylko tracę czas na odgruzowanie poczty ze śmieci.

Tym razem spamerzy wykorzystali brak zabezpieczeń w domyślnym formularzu kontaktowym sklepu internetowego opartego o silnik PrestaShop 1.6. Poskutkowało to masowym otrzymywaniem syfu pisanego głównie w cyrylicy.
Rozwiązanie, znalezione na oficjalnym anglojęzycznym forum wsparcia PrestaShop jest proste do zaimplementowania.

1. Wchodzimy do usługi Google reCaptcha. Aby z niej za darmo skorzystać należy posiadać konto w usługach Google.

2. Dodajemy tam naszą domenę i generujemy dwa klucze, czyli ciągi znaków.

3. Do nagłówka strony, czyli do pliku header.tpl w naszym szablonie, dodajemy tuż przed </head> następujący kod:

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

4. W szablonie contact-form.tpl przed </form> wstawiamy:

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

Uwaga! Należy wpisać klucz publiczny wygenerowany w usłudze reCaptcha w miejscu: [public Google key]

5. Na końcu otwieramy plik:
/controllers/front/ContactController.php

po linii:

$this->errors[] = Tools::displayError('Bad file extension');

wklejamy kod:

else if (!($gcaptcha = (int)(Tools::getValue('g-recaptcha-response'))))
 $this->errors[] = Tools::displayError('Captcha not verified');

Dla pewności jak on powinien wyglądać po wklejeniu podaję większy fragment kodu z pogrubieniem nowego:

else if (!empty($fileAttachment['name']) && !in_array( Tools::strtolower(substr($fileAttachment['name'], -4)), $extension) && !in_array( Tools::strtolower(substr($fileAttachment['name'], -5)), $extension))
 $this->errors[] = Tools::displayError('Bad file extension');
else if (!($gcaptcha = (int)(Tools::getValue('g-recaptcha-response'))))
 $this->errors[] = Tools::displayError('Zaznacz ptaka, że nie jesteś spamerem :-)');
else {

To wszystko, formularz jest zabezpieczony, a ruskije partizanty muszą kombinować gdzie indziej. Mogą na przykład zająć się szkoleniem gołębi na pucybuty.
No co? Jakoś trzeba było wytłumaczyć dołączone zdjęcie 😉

Autor tekstu:

Autor tekstu:

Tomasz Bartosiewicz - Ojciec dyrektor

Ojciec bo pełni funkcję taty dla dwójki cudownych dusz, a dyrektor, bo jest szefem w ITB Vega 😉
Co mnie kręci: świat technologii oraz jak można go użytecznie wykorzystywać, maratony w basenie, wędrówki po starych górach, robienie zdjęć.
Mieszkam i pracuję w Bydgoszczy, ale wykonuję sporo prac zdalnych. Jeśli szukasz kogoś do stworzenia strony internetowej lub do jej aktualizacji, zadzwoń, z przyjemnością porozmawiam o Twoich potrzebach
507 96 11 46

6 komentarzy

  1. Tomasz Bartosiewicz

    Haniu, trudno cokolwiek powiedzieć bez zajrzenia do kodu, ale wygląda na to, że gdzieś zrobiłaś błąd. To rozwiązanie przetestowałem na kilku wersjach Prestashop 1.6.x

  2. Hania

    Witam, fajnie prosto napisane poradziłam sobie spokojnie z tym że gdy wysyłam wiadomość wcale nie trzeba zaznaczyć kwadracika tylko wysyła nawet bez zaznaczenia 🙁

    Jakiś błąd z mojej strony?

  3. Selljus

    Dobry artykuł. Podobno roboty potrafią już ominąć reCaptcha, jednak nie jest to jeszcze tak powszechne i w większości przypadków spełnia oczekiwania.

  4. Tomasz Bartosiewicz

    Kurza burza! A to niespodzianka,
    nie zauważyłem, że WordPress zmienia apostrofy oraz cudzysłowia na inne jakieś znaki.
    Już poprawiłem, przepraszam za niedopatrzenie i dzięki Ewelino za odzew.
    Teraz powinno działać, jeśli kod wkleisz dokładnie tak jak jest podany.
    Dorzuciłem jeszcze większy kawałek kodu do podglądu, jak to dokładnie ma wyglądać.

  5. Ewelina

    Strona /kontakt działa jak usunę kod

    else if (!($gcaptcha = (int)(Tools::getValue(‚g-recaptcha-response’))))
    $this->errors[] = Tools::displayError(‚Captcha not verified’);

  6. Ewelina

    hej, wszystko zrobione tak jak napisane w artykule, a po wejściu na podstronę /kontakt mam komunikat

    Ta strona nie działa
    Serwer xxxx nie może teraz obsłużyć tego żądania.

    Presta 1.6.1.8

    gdzie mogę mieć problem ?
    Pozdrawiam

Wyślij komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Po godzinach

O bezpieczeństwie WordPress’a

O bezpieczeństwie WordPress’a

Żyjemy w czasach informacyjnych. Dosłownie informacja jest na wagę złota. Kto ma odpowiednią informację ten wygrywa. Wygrywa na polu biznesowym lub na polu walki. Dzięki informacji uzyskujesz przewagę, bo wiesz co lub gdzie, skąd, komu lub w końcu kiedy i za jaką cenę sprzedać. Za to historia konfliktów zbrojnych pokazuje, że zaskoczenie jest kluczowym czynnikiem decydującym o tym, kto wygra. WordPress napędza ponad 43% wszystkich witryn internetowych na świecie. Udział WordPress’a w stronach z panelem administracyjnym jest jeszcze większy, ponad 61%. Dlatego WordPress to bardzo ponętny kawałek.

Czy AI to tylko zabawka? Odczarowywanie tematu AI, rozmowa z prof. Piotrem Durką

Czy AI to tylko zabawka? Odczarowywanie tematu AI, rozmowa z prof. Piotrem Durką

Rozmowa, która powinna dość mocno rozwiać mgłę wokół tematu sztucznej inteligencji. Zajmuje niecałą godzinę, lecz każdy kogo nurtuje temat AI powinien ten materiał zobaczyć, aby „odczarować” swoje postrzeganie sprawy. Tak, odczarować, ponieważ w przytłaczającej większości ludzie mamieni są bełkotem sprzedawców, czyli marketing robi zamieszanie, a owczy pęd populacji podtrzymuje ten bełkot.

Empatia człowieka VS empatia sztucznej inteligencji

Empatia człowieka VS empatia sztucznej inteligencji

Dziś podczas pracy przy kodzie ChatGPT znowu zaczął mnie przepraszać za swoje pomyłki i tak mi się skojarzyło, jakie to AI jest kulturalne i nie ma przerostu ego. Jakiś czas temu wpadły mi w oko badania dotyczące poczucia empatii u swojego rozmówcy. Niestety nie pamiętam gdzie to wyczytałem, a chodziło o eksperyment, podczas którego grupę badanych osób skierowano na wywiad lekarski online. Część z lekarzy to byli ludzie z krwi i kości, a część AI wymodelowana pod tego typu działania. Badani oczywiście nie wiedzieli z kim mają do czynienia, a na koniec otrzymali ankietę do wypełnienia, w której były pytania również o empatię.