Jak zabezpieczyć formularze Drupala przed botami? Przegląd modułu Captcha

Jak zabezpieczyć formularze Drupala przed botami? Przegląd modułu Captcha

Udostępniając publicznie formularz na swojej stronie internetowej, musisz mieć świadomość, że prędzej czy później znajdą go boty rozsyłające spam. Jest to jedna z największych plag współczesnego Internetu. Przed tego typu sytuacjami ochroni Cię moduł Captcha.

W dalszej części artykułu przedstawię instrukcję korzystania z modułu i jego potencjalne możliwości. Jest to wiedza niezbędna, którą wykorzystujemy w praktyce w ramach dostarczanych w Droptica usług drupalowych.

Daty

Pierwsza wersja modułu ukazała się w maju 2005 roku dla Drupala 4. Tworzenie wersji dla Drupala 8 zajęło wiele lat. Pierwsze przymiarki miały miejsce jeszcze w 2013 roku, ale premiera stabilnej wersji odbyła się dopiero na początku 2020 roku.

Popularność modułu

Captcha jest modułem popularnym i docenianym. Według oficjalnych statystyk używa go niemal 300 000 stron opartych na Drupalu. Najnowsza wersja z gałęzi 8.x-1.x zainstalowana jest na 80 000 witryn. Popularność modułu stopniowo maleje - prawdopodobnie z uwagi na przechodzenie do innych, nowocześniejszych rozwiązań.

CAPTCHA - -popularity

Autorzy modułu

Moduł Captcha ma pięciu opiekunów, są to: Jakob Perry (z firm Acquia i Lanfest), Fabiano Sant'Ana (z firmy Chuva Inc.), Lachlan Ennis (z firmy Expert1 Pty Ltd), Naveen Valecha (z firmy Acquia) i Andrii Podanenko (z firm Open Y i ITCare). Wszyscy są niezwykle aktywnymi i wartościowymi członkami społeczności Drupala. Oficjalnym sponsorem modułu jest firma Chuva Inc.

Na repozytorium kodu składa się 606 commitów autorstwa niemal 120 użytkowników.

Do czego służy moduł

Moduł Captcha służy do zabezpieczania formularzy przed spamem, pomaga nam w upewnieniu się, że gość na stronie nie jest internetowym robotem. Istnieje wiele sposobów sprawdzenia wiarygodności użytkownika (jak chociażby reCaptcha) - dostarczane są one jako moduły zależne.

Domyślnie możesz skorzystać z prostego wyzwania matematycznego, które zablokuje formularz jeżeli wypełniająca go osoba nie wykona operacji dodawania dwóch liczb.

Unboxing

Moduł Captcha możesz pobrać ze strony https://www.drupal.org/project/captcha.

Po włączeniu modułu w Drupalu jedynym koniecznym krokiem jest wybranie formularzy, które chcesz objąć ochroną. Przejdź do ustawień modułu wybierając “Configuration → People → CAPTCHA module settings“ i wybierz zakładkę “Form settings”. Znajdź tam swój formularz i włącz go klikając na przycisk “Enable”.

CAPTCHA - list

Jeśli formularza nie ma na liście, dodaj go klikając przycisk “Add captcha point” i wpisz form_id. Efekt działania modułu dla formularza logowania użytkownika wygląda następująco:

CAPTCHA - form

Użycie modułu

Moduł Captcha ma kilka zaawansowanych ustawień pozwalających na lepsze dostosowanie ochrony witryn internetowych. Są to przede wszystkim:

  • Default challenge type - możliwość wyboru rodzaju “pułapki”, domyślnie jest to działanie matematyczne. Inne rodzaje dostarczane są przez zewnętrzne moduły.
  • Default challenge on non-listed forms - radykalne rozwiązanie włączające ochronę dla wszystkich formularzy, które nie są wymienione na liście “Form settings”.
  • Add CAPTCHA administration links to forms - bardzo przydatna opcja pozwalająca na administrowanie rodzajem zabezpieczenia bezpośrednio z poziomu danego formularza. Oszczędza dużo czasu na skomplikowanych stronach.
  • CAPTCHA placement caching - czyszczenie cache przydatne w przypadku problemów z formularzami.
  • Add a description to the CAPTCHA - dodanie opisu z wyjaśnieniem, dlaczego użytkownik musi udowodnić, że nie jest botem.
  • Case sensitive/insensitive validation - określenie, czy wielkie i małe litery będą rozróżniane w rozwiązaniu “zagadki” przedstawionej użytkownikowi.
  • Persistence - możliwość wyłączenia ochrony w pewnych szczególnych przypadkach, np. gdy użytkownik już wcześniej potwierdził swoją autentyczność.

Hooki i integracje

Captcha dostarcza dwa hooki służące do integracji modułów dla Drupala weryfikujących użytkowników. Są to:

  • hook_captcha() - główny hook wykorzystywany do definiowania własnych submodułów, ma konstrukcję znaną jeszcze z Drupala 7 (przekazuje zmienną $op zawierającą rodzaj aktualnie wykonywanej operacji).
  • hook_captcha_placement_map() - opcjonalny hook doprecyzowujący miejsce w formularzu, które powinno zostać zmodyfikowane.

Tutaj właśnie tkwi prawdziwa moc modułu. Na stronie drupal.org można znaleźć szereg projektów implementujących najróżniejsze metody weryfikacji:

  • reCAPTCHA - do obsługi najpopularniejszej z dostępnych usług weryfikujących, dostarczanej przez Google.
  • Image CAPTCHA refresh - moduł ten stanowi integralną część Captcha dla Drupal 8, dla Drupal 7 funkcjonuje jako osobny projekt. Wprowadza widget z obrazkiem, z którego należy przepisać tekst.
  • CAPTCHA Pack (tylko wersja alpha) - zbiór bardzo ciekawych “pułapek” na boty, obejmujący m.in. uzupełnianie brakującej litery lub słowa w zdaniu.
  • Text CAPTCHA (tylko Drupal 7) - integracja z serwisem textcaptcha.com.
  • Captcha Riddler - pozwala na zdefiniowanie własnego zestawu zagadek dla użytkownika.
  • Hidden CAPTCHA (tylko Drupal 7) - oszukuje boty poprzez wstawienie niewidzialnego pola, którego wypełnienie blokuje wysyłkę formularza.
  • CAPTCHA after (tylko Drupal 7) - uruchamia Captcha tylko wtedy, gdy użytkownik wysłał formularz kilkukrotnie.
  • KeyCAPTCHA (tylko Drupal 7) - integracja z serwisem keycaptcha.com.
  • Draggable CAPTCHA (tylko Drupal 7) - zagadka w formie drag&drop, bez zależności od zewnętrznych serwisów.

Podsumowanie

Za modułem przemawia przede wszystkim skuteczność i prostota implementacji. Doskonale sprawdzi się w walce z internetowymi spamerami.

Posiłkujemy się nim także w naszej agencji drupalowej, jako narzędziem pasującym do każdego formularza i nie wymagającym dodatkowego kodowania.

W ramach wsparcia dla Drupala utrzymujemy istniejące strony internetowe i rozbudowujemy je o nowe funkcjonalności