Mam formularz e-mail strony internetowej. Używam niestandardowego CAPTCHA, aby zapobiec spamowi robotów. Mimo to nadal otrzymuję spam.
Dlaczego? W jaki sposób roboty pokonują CAPTCHA? Czy używają jakiegoś zaawansowanego OCR, czy po prostu szukają rozwiązania z miejsca, w którym są przechowywane?
Jak mogę temu zapobiec? Czy powinienem przejść na inny rodzaj CAPTCHA?
Jestem pewien, że wiadomości e-mail pochodzą z formularza, ponieważ są wysyłane od mojego nadawcy wiadomości e-mail, który obsługuje wiadomości z formularza. Również styl litery jest taki sam.
Dla przypomnienia używam PHP + MySQL, ale nie szukam rozwiązania tego problemu. Byłem zainteresowany ogólną sytuacją, w której roboty pokonały te technologie. Właśnie podałem tę sytuację jako przykład, abyś mógł lepiej zrozumieć, o co pytam.
Odpowiedzi:
Dwa najprostsze sposoby na przejście przez CAPTCHA:
Używaj ludzkich farm, tzn. Poproś ludzi o wypełnienie CAPTCHA dla pieniędzy, tak jak robi to ProTypers .
Użyj OCR.
Może również występować błąd w samym mechanizmie CAPTCHA lub w otaczającej aplikacji, pozwalając komuś ominąć CAPTCHA.
Nawiasem mówiąc, artykuł W3C „Niedostępność CAPTCHA: alternatywy dla wizualnych testów Turinga w Internecie” wyjaśnia również, w jaki sposób można zagrozić CAPTCHA:
Jak więc zapobiec tym atakom?
Jeśli masz niestandardową implementację CAPTCHA, możesz spróbować przejść do popularnej, takiej jak reCAPTCHA .
Pomoże to, jeśli albo Twoja własna CAPTCHA była zbyt łatwa do rozpoznania, lub jeśli wystąpił błąd, który został pomyślnie wykorzystany.
Jeśli korzystasz z popularnego mechanizmu CAPTCHA, przejście na niestandardowy lub inny popularny może zapobiec OCR.
Technicznie nic nie stoi na przeszkodzie, aby farmy ludzkie: można tworzyć animowane pliki GIF, w których kilka ramek bardzo szybko wyświetla inny tekst, a użytkownik widzi tylko jedną ramkę, można zniekształcić lub wygiąć tekst we wszystkich kierunkach lub znaleźć nowe, alternatywne sposoby zapobiegania OCR z rozpoznawania tekstu, wciąż ludzie opłacani za rozwiązanie CAPTCHA, z powodzeniem je rozwiążą.
Możesz przejść od Visual CAPTCHA do dźwięku (jeśli nie używasz już obu, i powinieneś), ale oznacza to, że użytkownicy z zaburzeniami słuchu nie będą mogli korzystać z Twojej aplikacji.
FrustratedWithFormsDesigner i GalacticCowboy wspomniane w komentarzach CAPTCHA specyficznych dla domeny. Próbowałem znaleźć jakiś materiał na temat ich skuteczności, ale bez powodzenia, więc oto moja osobista opinia:
CAPTCHA specyficzne dla domeny mogą być bardzo denerwujące, gdy faktyczni użytkownicy nie mają pojęcia o odpowiedzi.
Przykład: odwiedzam stronę w witrynie z filmami. Zauważyłem błąd w artykule i chcę go skomentować, aby powiadomić autora o pomyłce. Formularz komentarzy prosi mnie, jako mechanizm CAPTCHA, o podanie nazwy aktorki wyświetlanej na zdjęciu. Nie mam pojęcia, kim jest ta aktorka, więc jedyne, co mogę zrobić, to opuścić stronę internetową (lub spędzić następne dwie minuty, używając obrazów Google).
Kolejny przykład: strona internetowa prosi o podanie synonimu „tajemniczy”. To proste, jak się wydaje, dla osoby bez wad, która mówi płynnie po angielsku, nie byłoby możliwe rozwiązanie bez pomocy zewnętrznej dla osób, które nie mówią dobrze po angielsku lub osób z pewnymi zaburzeniami rozwojowymi, nie licząc faktu, że znalezienie synonimów lub antonimów jest zawsze trudne.
Większość problemów specyficznych dla domeny można rozwiązać programowo. Oba podane przeze mnie przykłady można łatwo rozwiązać za pomocą zasobów zewnętrznych (Google Images i synonim Dictionary). Ten o tranzystorach podany jako przykład przez FrustratedWithFormsDesigner jest lepszy, ale nadal prawdopodobnie można go rozwiązać za pomocą niestandardowego bota.
Żadne nie jest odporne na ludzkie farmy.
Albo generują dane, tak jak zwykły tekst CAPTCHA rysują zniekształcone znaki, w takim przypadku algorytm generowania może zostać wykorzystany do dostrojenia botów, lub znajdują dane gdzieś, podobnie jak reCAPTCHA pobiera tekst ze zeskanowanych książek , w którym to przypadku bot może użyj przeciwko nim tych danych (na przykład, jeśli pobierzesz słowa ze słownika, prosząc użytkownika o podanie synonimów, bot może użyć tego samego słownika, aby odnieść 100% sukcesu).
źródło
Dodanie do odpowiedzi MainMa ...
Spamerzy nakłaniają innych do zrobienia dla nich CAPTCHA
Zasadniczo spamerzy zakładają witrynę Warez lub stronę pornograficzną, która wydaje się mieć na sobie CAPTCHA, ale nie jest to prawdziwa CAPTCHA. Bot pobiera CAPTCHA ze strony, którą chce spamować (lub w inny sposób wykorzystywać), a następnie wyświetla go na stronie Warez lub stronie pornograficznej, gdzie ktoś go dla niego wypełnia. Następnie wartość CAPTCHA jest przekazywana z powrotem do ich bota ...
Trochę więcej na temat spamerów
Używam reCAPTCHA i przekonałem się, że jest to w zasadzie bezwartościowe. Używam również niestandardowego filtru spamu, który przechwytuje spam, który przeszedł przez reCAPTCHA, i muszę go sprawdzać co kilka dni pod kątem fałszywych wyników pozytywnych.
Moje forum jest również napisane na zamówienie i ma bardzo mały ruch. Nie sądzę, aby ktoś zakodował konkretny atak na moją stronę. Mimo to mój filtr antyspamowy wyłapuje 2 000 wiadomości spamowych dziennie! Żadne z nich nie są nigdy wyświetlane na stronie. Spamerzy nie czerpią korzyści ze spamowania, ale nadal tak robią.
Widzę wzorce w próbach spamowania, ponieważ rejestruję to wszystko. Mogę ci powiedzieć: odkładając na bok, jak omijają CAPTCHA, spamerzy wyraźnie wykorzystują technikę brutalnej siły, zmieniając wypełnione pola oraz rodzaj mieszania danych i słów wypełniających te pola. Najwyraźniej robią to tak tanio (w tym omijając CAPTCHA), że nawet nie opłaca się analizować poszczególnych witryn, aby sprawdzić, czy to, co robią, działa, czy nie.
Z roku na rok nadal celują w moją witrynę tysiącami spamu dziennie, aby dostać jeden do każdego miesiąca, a ten zostaje ręcznie usunięty dzień później. Tak tanie jest spamowanie!
To będzie bitwa przez wiele lat. Szczególnie dla małych jednoosobowych witryn moderacyjnych, takich jak moja.
EDYCJA 22.06.2017 : Chcę dodać, że odkąd ten post google całkowicie przebudował reCAPTCHA i od tego momentu działa bezbłędnie. Chociaż podejrzewam, że jest trochę fałszywych alarmów lub jest to problem dla użytkowników, ponieważ poczta trochę spadła, odkąd go wdrożyłem. Dwie duże zmiany to
1) Używają obrazów zamiast tekstu (więc nie więcej OCR)
2) Łączą to z aktywnością użytkowników we wszystkich witrynach korzystających z reCAPTCHA. Więc jeśli miniesz reCAPTCHA na stronie A, to przejdź do strony B, może nawet nie poprosić cię o udowodnienie, że jesteś człowiekiem! Również (myślę), jeśli trafisz zbyt wiele reCAPTCHA w zbyt wielu witrynach, to również Cię oflaguje. Jestem pewien, że wykorzystuje również inne rodzaje sztucznej inteligencji, zależnie od aktywności użytkowników.
Jestem pewien, że to tylko kwestia czasu, zanim spamerzy też to pokonają ...
źródło
Czy kiedykolwiek próbowałeś użyć captcha dla kota? Mam forum, które miało standardową captcha i ją zmieniło i od tego czasu nie mam spamu dla gości.
źródło
Możliwe, że twoja strona jest atakowana przez bardzo tanią siłę roboczą i że człowiek ręcznie wpisuje twoje frazy CAPTCHA.
Jeśli rozwiązanie, którego używasz, nie jest zbyt skomplikowane, możliwe, że twój atakujący rozpoznaje obraz.
Istnieje również możliwość, że masz gdzieś w kodzie błąd, który pozwala na ominięcie CAPTCHA.
Nie zakładaj, że robot bije CAPTCHA. Pomyśl o swoim systemie holistycznie i sprawdź, czy nie został naruszony.
źródło
Inni dyskutowali, w jaki sposób spamerzy omijają CAPTCHA. Oto kilka wskazówek, jak temu zapobiec :
Uwaga: nie ma srebrnej kuli, a spamerzy wydają się być o 1 krok przed grą. Będziesz musiał użyć kombinacji wielu technik
źródło
Aby powtórzyć inne odpowiedzi, prawdopodobnie napotykasz boty, które wykorzystują ludzkie farmy, aby wprowadzić dla nich captchas.
Niedawno omówiłem technikę (i wydałem towarzyszący moduł Drupal), który blokuje roboty spamujące, wymagając JavaScript po stronie klienta. O ile mi wiadomo, działało to ze 100% wydajnością we wszystkich witrynach, które korzystały z tego kodu. Pomysł polega na użyciu AJAX do wygenerowania unikatowego skrótu i przesłania go wraz z innymi danymi formularza, a następnie obliczenia tego samego skrótu na zapleczu po przesłaniu formularza i porównania dwóch wartości.
Pełne szczegóły w moim poście na blogu (przypadkowo, ponieważ wspomniałeś o PHP + MySQL, są to te same technologie, które tam opisano) - Wydanie modułu: Badbot; eliminowanie spamu ...
źródło
Jeśli twoja strona jest na Twitterze, a ktoś celował w nią konkretnie (zamiast bota, który ją znalazł), możesz przestać czytać ...
W przeciwnym razie może nie być warte tego, aby formularz NIE wyglądał jak formularz. 1. Nie posiadaj pól z napisem „e-mail” w typie, nazwie lub symbolu zastępczym, użyj krótkich lub mylących nazw dla wszystkich pól. 2. Nie używaj rzeczywistego elementu formularza HTML i przycisku Prześlij. Zamiast tego użyj AJAX, aby opublikować go po kliknięciu normalnego diva (stylizowanego na przycisk). 3. Nie umieszczaj zdarzenia onclick w html, dodaj detektor w JavaScript. 4. Użyj JavaScript, aby wypełnić wszystkie wskazówki „wpisz tutaj swój adres e-mail”, ponieważ możliwe jest, że boty faktycznie nie będą wywoływały JS podczas trałowania stron (nie jestem pewien w tej sprawie, ale i tak to robię).
źródło