Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pytanie o Captcha
Forum PHP.pl > Forum > PHP
kuujo
Chciałbym zrobić własny Captcha, żeby mieć większą pewność, że mój serwis jest chroniony. Na necie widzę całą masę różnych wersji takiej ochrony, a niektóre wydają się bez sensu. Nie mogę nigdzie znaleźć odpowiedzi na pytanie od czego tak naprawdę się chronię, a chodzi mi tutaj o możliwości potencjalnych atakujących.

Co potrafią te atakujące skrypty i w jaki sposób powinienem tworzyć swój obrazek, aby był on najbezpieczniejszy?


Czy powinien być lekko blurowany, czy zniekształcony, czy może te losowe linie i kropki dają efekt, czy kolory liter też mają znaczenie, czy lepiej jak każda litera ma inny kolor, czy może jakieś nieregularności na brzegach czcionek są skuteczne, jeżeli zrobiłbym to wszystko na raz, to nawet człowiek nie będzie w stanie się z tego rozczytać, więc które rozwiązania mam wybrać


Byłbym też wdzięczny za jakikolwiek link do artykułów na temat Captcha i chodzi mi bardziej o część teoretyczną, niż o gotowy kod.

Z góry dzięki.
vokiel
Captcha ma za zadanie odróżnić bota, automat od człowieka.

Osobiście nie lubię tego sposobu. Sprawdzić czy po drugiej stronie komputera siedzi człowiek można w inny sposób, który jest przyjemniejszy dla użytkownika.
kuujo
Ale moje pytanie brzmiało - jak działa ten bot, automat i jaki sposób obrony jest najskuteczniejszy.

A podzielisz się tym twoim przyjemniejszym sposobem?
deirathe
Ja swego czasu zrobiłem taką captchę: http://ogloszenia.eszczecin.pl/filter/
I sprawuje się dobrze, tyle że to było trochę czasu temu a serwis został porzucony i nie dokończony sad.gif, żyje własnym życiem.
Jeżeli ktoś zainteresowany to podrzucę paczkę z kodem na blogu.

A bot każdy działa inaczej, ciężko jednoznacznie powiedzieć czy będzie wszystko bezpieczne, jeżeli coś się staje popularne to ludzie piszą pod to boty dedykowane dla danego forum lub innej webowej aplikacji.
vokiel
Bot pobiera obrazek i próboje odczytać z niego tekst. Coś na zasadzie OCR. Kiedyś widziałem nawet ocr w javascript, ponoć całkiem dobry. Odczytywanie tekstu z obrazka zwykle polega na wykrywaniu krawędzi.

Pod kontkretne serwisy czasem tworzy się wzory znaków występujących w danej wersji captcha. Następnie robi się porównanie każdego znaku ze wzorcem.
erix
Olej CAPTCHA, coraz bardziej irytuje...

Jest tyle innych rozwiązań - filtry bayesowskie, listy RBL, chociażby uzależnienie od JS (sprawdzanie czasu wypełniania formularza), CAPTCHA jest BE.
kuujo
Cytat
Bot pobiera obrazek i próboje odczytać z niego tekst. Coś na zasadzie OCR. Kiedyś widziałem nawet ocr w javascript, ponoć całkiem dobry. Odczytywanie tekstu z obrazka zwykle polega na wykrywaniu krawędzi.

Pod kontkretne serwisy czasem tworzy się wzory znaków występujących w danej wersji captcha. Następnie robi się porównanie każdego znaku ze wzorcem.


Dzięki właśnie o to mi chodziło.

Cytat
Olej CAPTCHA, coraz bardziej irytuje...

Jest tyle innych rozwiązań - filtry bayesowskie, listy RBL, chociażby uzależnienie od JS (sprawdzanie czasu wypełniania formularza), CAPTCHA jest BE.


Zdaję sobie sprawę z tego, że CAPTCHA jest irytujące, ale do tej pory nie znałem innych sposobów na ochronę przed spamem, poczytam trochę o tych, które podałeś, dzięki.

A z tych sposobów, za który najlepiej się wziąć?
erix
Cytat
ale do tej pory nie znałem innych sposobów na ochronę przed spamem

Ja korzystam ze SBLAM! i nie mam problemów. ;]
kuujo
Hmm no nie wiem, ten SBLAM! korzysta z całej masy metod, a większość z nich opiera się na zwykłych słownikach, bądź listach typowych wyrażeń, a ciężko ufać takim metodom. Nie dość, że te ogromne słowniki to i tak tylko kropla w morzu, to do tego jest szansa, że będzie się obrywało też zwykłym użytkownikom i to dosyć mocno, Niektóre z metod mogą zablokować kogoś tylko za to, że wysyła wiadomość w środku nocy, albo napisał nieświadomie ciąg wyrazów, który akurat był na czarnej liście.

Wykorzystam małą część metod z SBLAM! we własnym zabezpieczeniu, ale całości bym nie ruszał. Może się nie znam, albo o czymś nie wiem, jak ktoś mnie oświeci, to będę wdzięczny.
erix
Ale ja nie mówię, żebyś stawiał u siebie serwer SBLAM!, tylko skorzystał z jednej metody w pliku sblamtest.php... winksmiley.jpg

Cztery linijki kodu, nic więcej.

Cytat
Niektóre z metod mogą zablokować kogoś tylko za to, że wysyła wiadomość w środku nocy, albo napisał nieświadomie ciąg wyrazów, który akurat był na czarnej liście.

Poczytaj, jak działa SBLAM! i wtedy podyskutujemy.
#luq
Co do captchy - metod jej rozwiązywania, co wpływa na jej trudność itd. - będę nieskromny i zarzucę linkiem do mojego bloga http://luq10.wordpress.com/2009/03/06/orange-captcha/ tam jest też podany kolejny link na ten temat.

A tak poza tym, to trudno jest o pełne zabezpieczenie się przed botami. Gmail jakiś czas temu wypuścił audio captche. User słuchał nagrania w którym pośród szumu i innych dźwięków był głos wypowiadający kolejne cyferki, które należało wpisać w pole. Oczywiście captche złamano.
Gdzieś na necie jest filmik pokazujący jak działa ta maszynka do rozwiązywania.
kuujo
Zastanawiam się co by było bardziej skuteczne - CAPTCHA z jednym wyrazem, w którym litery lekko nachodzą na siebie, czy CAPTCHA z dwoma wyrazami, które się na siebie nakładają i należy wypisać jedno z nich. Ta druga opcja może trochę bardziej irytować użytkowników, ale to też zależy od tego jak się ją wykona, a ta pierwsza z kolei może być mniej skuteczna.

Na 100% zrobię CAPTCHA z losowymi cyframi, literami i losową ilością znaków, bo do wyrazów, które mają sens, wystarczy jakiś słownik i już po zawodach. W tym artykule, który jest już dosyć stary: http://www.cs.sfu.ca/~mori/research/gimpy/ skrypt im w parę sekund odnajdował poprawny wyraz, w 92% przypadków się zgadzał. Nie wiem jak ludzie z takimi informacjami jeszcze dalej trzymają się tych zabezpieczeń.
erix
Cytat
Ta druga opcja może trochę bardziej irytować użytkowników, ale to też zależy od tego jak się ją wykona, a ta pierwsza z kolei może być mniej skuteczna.

OCR-y są dzisiaj całkiem niezłej jakości - po zwiększeniu kontrastu obrazu na max jest dużo łatwiej.

A zachodzące wyrazy denerwują, zniechęcisz tylko gości.

Cytat
skrypt im w parę sekund odnajdował poprawny wyraz, w 92% przypadków się zgadzał. Nie wiem jak ludzie z takimi informacjami jeszcze dalej trzymają się tych zabezpieczeń.

Zwiększyłbym te 92%...
pgrzelka
najważniejsze jest abyś dostosował zabezpieczenie do serwisu, jeśli chcesz zabezpieczyć dodawanie komentarzy np. na blogu to wystarczy dodać w formularzu ukrytego inputa (ukrytego cssem), user nic w niego nie wpisze, a bot wpisze cokolwiek bo boty wypełniają wszystkie pola, i po wysłaniu formularza jeśli to ukryte pole zawiera jakąś treść to masz pewność że człowiek tego nie napisał

jeśli tworzysz coś bardziej rozbudowanego, to np. na menelgame.pl jest dość ciekawe rozwiązanie, po kliknięciu submita wyskakuje małe okienko w którym musisz kliknąć na cyfrę. ale takie zabezpieczenia opłaca się tworzyć tylko wtedy gdy istnieją przypuszczenia że ktoś może napisać bota specjalnie pod Twój serwis.

vokiel
Widzieliście cahtcha na mail.ru?

Bardziej przyjemne w obsłudze niz przepisywanie tekstu. Polega na wyklikaniu znaczków z obrazka. Z tym mykiem, że po każdym kliknięciu zmienia się kolejność przycisków na tej mini-klawiaturze.
Tylko dedykowany bot mógłby próbować sobie z tym radzić.
kuujo
Cytat
Widzieliście cahtcha na mail.ru?

Bardziej przyjemne w obsłudze niz przepisywanie tekstu. Polega na wyklikaniu znaczków z obrazka. Z tym mykiem, że po każdym kliknięciu zmienia się kolejność przycisków na tej mini-klawiaturze.
Tylko dedykowany bot mógłby próbować sobie z tym radzić.



To mi się podoba. Nawet bardzo. Nie dość, że faktycznie dobrze chroni to jeszcze jest przyjemniejsze od zwykłych CAPTCHA, właśnie szukałem tego typu rozwiązania, jutro się za to zabieram smile.gif
erix
Cytat
Bardziej przyjemne w obsłudze niz przepisywanie tekstu.

Zwłaszcza dla niepełnosprawnych...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.