Formularz kontaktowy na stronie WWW – o jego nadużyciach i zabezpieczeniu słów kilka

W złych rękach formularz kontaktowy to karabin do wysyłki niechcianych wiadomości. Dowiedz się w jaki sposób jest wykorzystywany i jak się zabezpieczyć przed prostymi nadużyciami.

Jeśli codziennie musisz usuwać kilkadziesiąt bądź kilkaset niechcianych wiadomości wysłanych za pomocą Twojego formularza to jest to wynik jego złego zabezpieczenia. Co gorsza, jeśli za jego pomocą można wysłać także wiadomości do innych odbiorców, to z wykorzystaniem TWOJEGO adresu e-mail dochodzi do wysyłki niechcianych wiadomości do innych użytkowników sieci. W tym artykule dowiesz się w jaki sposób dochodzi do nadużyć formularza i jak się obronić przed ich zdecydowaną większością.

Do jakiego celu wykorzystywany jest niezabezpieczony formularz kontaktowy?

Tu odpowiedź jest bardzo prosta – niezabezpieczony formularz kontaktowy zostanie wykorzystany do masowej wysyłki niechcianych wiadomości, reklamujących nikomu niepotrzebne produkty. Jeśli udostępniasz taką opcję, może także dojść do załączenia szkodliwego pliku. W większości przypadków będą to wiadomości do Ciebie, jednak w zależności od ustawień – formularz jest także w stanie wysłać wiadomości na podane w polu e-mail adresy.

Kto korzysta z niezabezpieczonego formularza kontaktowego?

Najczęściej są to szkodliwe boty, które są w stanie automatycznie i masowo wysyłać wiadomości na różne adresy e-mail. Za wysyłkę spamu może też ręcznie odpowiadać człowiek – ale w tym przypadku Twoje możliwości są mocno ograniczone. Dobrą nowiną natomiast jest, że osoba, która ręcznie nadużywa Twój formularz w dalszym ciągu jest znacznie wolniejsza od szkodliwych botów.

W jaki sposób szkodliwe boty pozyskały adresy e-mail? Jaki jest ich cel?

Te adresy boty pozyskały wcześniej innymi metodami, często w wyniku wycieków danych z różnych serwisów oraz po prostu chodząc od strony do strony i zbierając adresy zapisane w kodzie strony.

Wycieki danych uderzają w małe i duże serwisy. Ostatnio zdarzyło się to Facebook’owi, ale zdarza się to także mniej znanym serwisom. Najnowsze wycieki sprawdzisz na Niebezpieczniku tu i tu.

Wiemy już więc, że szkodliwy bot posiada bazę adresów e-mail. Jego zadaniem jest wysłanie na te adresy e-mail niechcianych wiadomości reklamujących wiagrę, prowadzących do szkodliwych stron lub wysyłają wiadomości z szkodliwym załącznikiem. Co chwilę ktoś w Internecie zostaje przez taki spam zainfekowany, w efekcie ofiara traci czas i pieniądze.

Boty znają formularze kontaktowe

Bot znajdując formularz kontaktowy natychmiast przystąpi do działania. Pole e-mail jest mu znane od urodzenia – w tym polu bez wahania wstawi adres e-mail osoby, którą chce zaspamować. Nadawca? No przecież to oczywiste – Viagra123. Temat? A ile razy wiadomość o temacie „jak powiększyć sobie to i owo” znalazła się na twojej skrzynce? Ostatnie pole, treść wiadomości. No i widzisz piękną ofertę tanich niebieskich tabletek. Załącznik? W archiwum .rar dostajesz piękną fakturę, oczywiście zainfekowaną.

Jeśli twój formularz wysyła na podany w odpowiednim polu adres e-mail wiadomość, to właśnie wysłałeś komuś niechcianą wiadomość. To może być zwykły autoresponder mający potwierdzić dostarczenie wiadomości wysłanej poprzez formularz. Było by nie było – ostatecznie ktoś wykorzystał Twoje narzędzie do niecnych czynów. Jeśli jednak nie skonfigurowałeś takiej opcji to wiadomość zostanie dostarczona tylko Tobie. W tym przypadku oczywiście powinieneś ją zignorować i usunąć.

Czy muszę zabezpieczyć swój formularz?

Jeśli poprzez formularz wysyłane są wiadomości tylko i wyłączenie do Ciebie to niekoniecznie. Świadomie godzisz się na otrzymywanie ew. niechcianych wiadomości.

Nadal jednak ryzykujesz. Twoje konto pocztowe może zostać przepełnione i nie będziesz w stanie otrzymać nowych, ważnych wiadomości e-mail ani też nie wyślesz nowej wiadomości. Twój serwer może zostać znacząco obciążony i mu nie podołać – w efekcie potencjalne osoby odwiedzające Twoją stronę zobaczą jedynie błędy. Na serwerze możesz wyczerpać swój transfer. A w przypadku serwerów współdzielonych i tak możesz się spodziewać blokady funkcji mail() i/lub konta pocztowego, jeśli wysyłkę przeprowadzasz poprzez protokół SMTP. Jeśli tylko którekolwiek z powyższych zajdzie – ryzykujesz utratę cennego czasu i własnych pieniędzy.

W przypadku, gdy formularz wysyła też wiadomość do adresu e-mail podanego w formularzu – sprawa jest znacznie poważniejsza. Opisane wcześniej ryzyko dalej wchodzi w grę, a ponadto niechciane wiadomości są wysyłane do innych osób – o niepożądane negatywne konsekwencje tego jest znacznie łatwiej, ponadto definitywnie stracisz jeszcze więcej cennego czasu na naprawienie szkód.

Negatywne konsekwencje masowej wysyłki wiadomości na obce adresy

  • Adres IP Twojego serwera pocztowego zostanie dodany do czarnej listy (ang. blacklist). Przez najbliższe kilka dni Twoje ważne wiadomości wysłane do różnych odbiorców mogą być odrzucane. Ponadto z niektórych list należy się ręcznie wypisać – w innym przypadku wiadomości będą odrzucane znacznie dłużej. W dodatku czarne listy rzetelnie sprawdzisz dopiero po 48-72 godzin od wysłania ostatniej niechcianej wiadomości – przez ten czas kolejni operatorzy mogą dodawać Cię do swojej bazy.
  • Dodanie Twojej domeny do czarnej listy. Wszystko tak jak wyżej. Ponadto odwiedzającym Twoją stronę może pokazać się komunikat, iż strona służyła do wysyłki niechcianych wiadomości i może zawierać niechciane treści. Chyba nie muszę mówić, iż oznacza to zmniejszenie ruchu na stronie, a to oznacza utratę zaufania klientów, niższą pozycję w wyszukiwarkach i ostatecznie mniejszy ruch na stronie?
  • Zablokowane konto pocztowe i/lub funkcja mail(). To drugie zostanie zablokowane, jeśli masz stronę WWW na serwerze współdzielonym i do wysyłki używasz tej funkcji. To pierwsze zostanie zablokowane, jeśli do wysyłki wiadomości używasz protokołu SMTP. W obydwóch przypadkach tracisz czas na wyjaśnienia ze swoim usługodawcą. Chyba, że posiadasz swój własny serwer pocztowy, w tym przypadku ten negatywny efekt całkowicie Cię ominie.
  • Dodanie do osobistych czarnych list. Twój adres e-mail przez wielu użytkowników zostanie dodany do ich własnej czarnej listy, a następnie o tym zapomną. W efekcie, jeśli po jakimś czasie (nawet po kilku latach) trafią na Twoją stronę i będą chcieli nawiązać kontakt – może się to okazać kłopotliwe i skutecznie zniechęcające.
  • Jeśli adres e-mail Twojego kontrahenta znalazł się już w jakiś sposób w bazie posiadanej przez bota, to Twój kontakt zobaczy wiadomość od zaufanego nadawcy. Może on z mniejszą niż zazwyczaj ostrożnością potraktować wiadomość i w efekcie zainfekować swoje urządzenie. Co się będziesz musiał potem tłumaczyć to Twoje. Jeszcze gorzej, jeśli doszło do wykradzenia Twojej książki adresowej (np. poprzez wirusa/trojana na lokalnym urządzeniu) – w tym przypadku możesz się spodziewać, że wszyscy Twoi klienci dostali niechcianą wiadomość od Ciebie.

W jaki sposób zabezpieczyć formularz kontaktowy?

Nie musisz od razu wdrażać kodu CAPTCHA, którego nikt nie jest w stanie rozpoznać. Częstym wyborem jest tutaj użycie kodu CAPTCHA od Google, jednak nadal nie wydaje mi się on być przyjazny dla użytkownika, aczkolwiek na pewno powinno się rozważyć jego wprowadzenie, szczególnie w wyjątkowo ciężkich przypadkach.

Po pierwsze, najlepiej zrezygnować z funkcji mail(). Dzięki temu jeśli z jakiegoś powodu na serwerze znajdą się szkodliwe skrypty to nie będą one w stanie wysłać wiadomości e-mail za jej pomocą. Musisz jednak pamiętać, że szkodliwe aplikacje napisane na używany przez Ciebie CMS nadal są w stanie wysyłać wiadomości, jeśli skonfigurujesz odpowiednie połączenie SMTP. I to właśnie połączenie SMTP sugeruję jako alternatywę dla funkcji mail(). W przypadku serwerów współdzielonych skontaktuj się ze swoim usługodawcą jeśli nie wiesz jak wyłączyć funkcję mail(). Do wysyłki wiadomości powinieneś użyć dedykowanego konta pocztowego, np. noreply@twojadomena.pl. Niestety, hasło do tego konta pocztowego w większości przypadku w systemach CMS będzie zapisane w „czystym” tekście – w przypadku włamania bądź wykorzystaniu luk w oprogramowaniu atakujący bez problemu będą mogli przeprowadzić logowanie na Twoje konto pocztowe. W związku z tym na tym dedykowanym koncie nie powinieneś posiadać żadnej ważnej korespondencji. Wiadomości przychodzące najlepiej od razu usuwać poprzez odpowiedni filtr, który zdefiniujesz na stronie swojego dostawcy. Na serwerze WWW powinieneś być w stanie zdefiniować adres „Odpowiedz DO” (ang. „Reply To”), np. biuro@twojadomena.pl, dzięki czemu ew. dodatkowe informacje wysłane przez klientów będą kierowane na właściwy adres.

Ponieważ po zmianie sposobu wysyłki nadal można wykorzystać luki w oprogramowaniu – pamiętaj, by aktualizować oprogramowanie do najnowszej wersji, używać silnych haseł i nie instalować zbędnych, a w szczególności podejrzanych wtyczek.

Jako pierwsze zabezpieczenie już bezpośrednio w formularzu kontaktowym warto wdrożyć coś całkowicie niewidocznego dla osoby odwiedzającą Twoją witrynę, a widoczne przez szkodliwe boty. Honeypot to pułapka mająca na celu wykrycie prób nieautoryzowanego użycia systemu czy pozyskania danych. W przypadku formularza kontaktowego polega to na wprowadzeniu pola, którego użytkownik nie powinien wypełnić i często jest to pole niewidoczne na stronie. A jeśli dojdzie do wypełnienia tego specjalnego pola (co zrobi tylko bot), to wysyłka wiadomości się nie odbywa. Proste zabezpieczenie, spora część botów nieznane pola wypełnia sobie tylko znanymi danymi. Jednak co mądrzejsze szkodliwe boty są w stanie obejść pułapkę.

Dodaj prosty kod CAPTCHA. Wystarczy prosta matematyka, która zatrzyma wysyłkę części niechcianych wiadomości. Nie jest to najlepsze zabezpieczenie (chyba, że wytoczysz działo, jakim są kody CAPTCHA dostarczane przez Google). Powinno się to jednak nieźle uzupełniać z polem honeypot, a użytkowników zbytnio nie zdenerwuje.

Następnie spróbuj w automatyczny sposób przetworzyć wiadomość. Jeśli wiadomość zawiera pewne słowa – możesz ją z automatu odrzucić. Podłącz też formularz do zewnętrznego programu analizującego zawartość wypełnionych pól, np. Akismet.

Ponadto jeśli Twój formularz pozwala na załączenie plików i wysyłasz potwierdzenie na podany w formularz adres e-mail to czy koniecznie musisz te pliki również załączyć w ramach potwierdzenia? Raczej nie, wystarczy, że tylko ty je otrzymasz.

Bardzo krótkie zestawienie wtyczek i instrukcji, które ułatwią wdrożenie odpowiednich zabezpieczeń

WordPress

Joomla

  • Globalnie wyłącz funkcję mail() na serwerze (w przypadku serwerów współdzielonych może być wymagana współpraca z Twoim hostingodawcą), skonfiguruj połączenie SMTP
  • RSForm!Pro (wbudowane wsparcie dla CAPTCHA)
  • Większość pozostałych wtyczek również pozwala wdrożyć zabezpieczenie w postaci kodów CAPTCHY i/lub honeypotów.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *