Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]bezobrazkowa captcha
acidm
post 2.09.2012, 13:35:56
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

Ostrzeżenie: (0%)
-----


Czy można zabezpieczyć się przed spambootami bez obrazków ?
Np. generuje klucz ,zapisuje go sesji do przeglądarki wysyłam formularz z ukrytym inputem poczym ajaxem pobieram klucz i dolaczam js-em do inputa. Po wysłanie formularza sprawdzam czy ukryty input ma pożądaną wartość jeśli tak to przepuszczam dalej jak nie to exit...

Czy takie podejście będzie skuteczne?


  1. <?php
  2. if (!isset($_SESSION['captcha'])) {
  3. $znaki = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890_+{}|:<>~?';
  4. $znaki = str_split($znaki);
  5. $ile = 6;
  6. $str = '';
  7. while ($ile) {
  8. --$ile;
  9. $str .= $znaki[array_rand($znaki)];
  10. }
  11. $str = sha1($str);
  12. $_SESSION['captcha'] = $str;
  13. }
  14.  
  15.  
  16. if (isset($_POST['sendme']) && $_POST['sendme'] === '1') {
  17. die($_SESSION['captcha']);
  18. }
  19.  
  20. if (!empty($_POST['captcha']) && $_POST['captcha'] === $_SESSION['captcha'] && !empty($_POST['a']) && !empty($_POST['b'])) {
  21. unset($_SESSION['captcha']);
  22. //wykonanie dowolego kodu jeśli nie jesteś bootem
  23. //np:
  24. print_r($_POST);
  25. }
  26.  
  27.  
  28. ?>
  29. <!DOCTYPE HTML>
  30. <html>
  31. <head>
  32. <meta charset="utf-8">
  33. <title>locale</title>
  34. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
  35. </script>
  36. <script type="text/javascript">
  37. $(document).ready(function(){
  38. $.post('<?php
  39. echo $_SERVER['PHP_SELF'];
  40. ?>',{sendme:1},function(data){$('input[name="captcha"]').val(data);
  41. })
  42.  
  43. })
  44. </script>
  45. </head>
  46. <body>
  47. <form action="" method="post" enctype="application/x-www-form-urlencoded">
  48. <input name="a" type="text">
  49. <input name="b" type="text">
  50. <input name="captcha" type="hidden">
  51. <input type="submit">
  52. </form>
  53. </body>
  54. </html>
  55.  

Go to the top of the page
+Quote Post
b4rt3kk
post 2.09.2012, 14:01:26
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Jak ktoś ma przepisać tę captchę jak nigdzie jej nie wyświetlasz?


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
acidm
post 2.09.2012, 15:03:23
Post #3





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

Ostrzeżenie: (0%)
-----


Nie ma jej pisać.
Ma to zrobić js.
Spambooty nie interpretują js a przeglądarka usera tak. (poprawić jeśli się mylę)
Go to the top of the page
+Quote Post
rzymek01
post 2.09.2012, 15:06:21
Post #4





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

Ostrzeżenie: (0%)
-----


Nie sądzę, aby js był jakimkolwiek problemem dla spambotów


--------------------
:]
Go to the top of the page
+Quote Post
acidm
post 3.09.2012, 10:24:55
Post #5





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

Ostrzeżenie: (0%)
-----


Nawet jeśli kod klucza nie jest umieszczony bezpośrednio w kodzie tylko pobierany w tle ajaxem i ładowany do inputa?

Dobra , skoro generowanie treści ajaxem i wstawianie automatyczne odpada to pozostaje :
1.filtrowanie popularnych ip spambotów
2.zbudowanie lub użycie gotowej catptchy w js np.z obsługą drag&drop - przykład ajax fancy captcha

Co myślicie o tych rozwiązaniach?
Znacie inne skuteczne?

Ten post edytował acidm 3.09.2012, 10:25:50
Go to the top of the page
+Quote Post
!*!
post 3.09.2012, 10:58:53
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Cytat
Czy takie podejście będzie skuteczne?

Nie.
Cytat
Spambooty nie interpretują js a przeglądarka usera tak. (poprawić jeśli się mylę)

Jakiś czas temu jeszcze tego nie robiły (zwyczajnie nie było takiej potrzeby), ale nie sądzę, aby było to wielką przeszkodą, skoro jest to możliwe.

Nie kombinuj, poszukaj na forum, szczególnie w dziale PHP, było już wiele tematów odnośnie captchy. Twój sposób jest do obejścia i stwierdzenie bezpieczeństwa siedzi przy nim tylko w Twojej głowie, nigdzie więcej.

Już nie wspominając o tym że ludzie bez JS, zwyczajnie tego nie przejdą.

Ten post edytował !*! 3.09.2012, 11:11:02


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
acidm
post 3.09.2012, 12:23:45
Post #7





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

Ostrzeżenie: (0%)
-----


Zgadza się ,nie można zabezpieczyć sie przed botami w js w 100%.
Można tylko utrudnić spawę botowi przez js ale dla dedykowanego rozwiązania jest zawsze dedykowane obejście.
W sumie im więcej czytam o sposobach obrony przed bootami tym bardziej mam wrażenie że nie ma jednego w 100% działającego rozwiązania :|,można próbować utrudnić dostęp botom, lub co chyba lepsze skorzystać z paru rozwiązań naraz.
Go to the top of the page
+Quote Post
!*!
post 3.09.2012, 12:29:03
Post #8





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Cytat
lub co chyba lepsze skorzystać z paru rozwiązań naraz

Masz utrudniać botowi dostęp do serwisu, a nie użytkownikowi. Stosuj reCaptche i po kłopocie, skoro pytasz o takie rzeczy na forum, to Twój serwis i tak nie będzie na tyle atrakcyjny, aby zaprzęgać pod niego jakiegokolwiek bota, chyba że automatycznego.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
acidm
post 3.09.2012, 12:53:31
Post #9





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

Ostrzeżenie: (0%)
-----


Cytat(!*! @ 3.09.2012, 13:29:03 ) *
Masz utrudniać botowi dostęp do serwisu, a nie użytkownikowi. Stosuj reCaptche

Doprawdy?
No jak dla mnie to właśnie obrazkowe captche są najbardziej utrudniające życie użytkownikowi.
Po za tym im bardziej są bezpieczniesze tym bardziej trudniejsze do odczytu .
Pora zapoznać sie z sblam! smile.gif

Ten post edytował acidm 3.09.2012, 12:55:16
Go to the top of the page
+Quote Post
!*!
post 3.09.2012, 12:59:48
Post #10





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Cytat
No jak dla mnie to właśnie obrazkowe captche są najbardziej utrudniające życie użytkownikowi.

Lepszego sposobu nie ma i nie będzie przez najbliższe 10-15lat, aż kamery nie staną się standardem i nie będzie bezpośredniej weryfikacji mordy przed monitorem, czy przypadkiem nie loguje się pies... ale do standardu który na to pozwala na razie w nowszych przeglądarkach, jeszcze daleko.

Kazde inne rozwiązanie, które nie jest "przepisaniem tekstu z obrazka" jest zwyczajnie marnej jakości i ma za dużo wad aby mogło przyjąć się w czymś większym.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
rzymek01
post 3.09.2012, 17:30:36
Post #11





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

Ostrzeżenie: (0%)
-----


Są inne sposoby, mianowicie captche niezawierające literek do przepisania tylko obrazki z kontekstem, które dla człowieka są trywialne, dla bota już nie.

Gdzieś widziałem captchę typu był sobie parking, 3 samochody, kilka wolnych miejsc parkingowych i tekst "przeciągnij sportowy samochód na wolne miejsce do zaparkowania". Oczywiście parafrazuję, ale chodzi o ideę. Problem jest taki, że takich captch nie można automatycznie tworzyć, ale mogą powstać (może już istnieje) serwis, który udostepnia dużą gamę takich captch.

Jak na razie całkiem dobra alternatywą jest KeyCaptcha.
Użytkownik ma za zadanie ułożyć obrazek. Działa we wszystkich przeglądarkach (na starszych potrzebny jest flash).


--------------------
:]
Go to the top of the page
+Quote Post
acidm
post 5.09.2012, 10:13:17
Post #12





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

Ostrzeżenie: (0%)
-----


Ciekawe rozwiązanie tylko ma mały szkopuł , user wykonuje polecenie po czym funkcja w js podbindowana do odpowiednich zdarzeń sprawdza efekt, jeśli test wykonany poprawnie to wykonuje akcje (np. dodanie inputa z odpowiednią wartością do formy).
Skoro robot może wykonywać kod js to odpowiednio zaprogramowany robot może wykonać samą akcję omijając cały proces sprawdzania poczynań usera. Można by kod js odpowiedzialny z akcje skompresować czy pobierać ajaxem i wykonywać (brzydkim) evalem ale to żadne zabezpieczenie tylko chwilowe utrudnienie.

Więc jest to fajne rozwiązanie ale tylko do czasu aż ktoś napisze dedykowanego bota lub dane rozwiązanie będzie na tyle powszechne że obejście doczeka się implementacji w zautomatyzowanych botach.

Rowiązanie z obrazkowo-literkowymi captcha jest też nie wystarczające :
-mocno zniekształcony tekst (a tylko w ten sposób captcha może być w miarę skuteczna) utrudnia odczyt użytkownikowi
-w raz z rozwojem OCR-ów takie captche będą (jeśli nie są już) coraz słabszym rozwiązaniem


Są jeszcze jakieś propozycje?
Go to the top of the page
+Quote Post
CuteOne
post 5.09.2012, 10:35:44
Post #13





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


Widziałem kiedyś captche typu "przeciągnij i upuść" zrobiona pod ajaxem:
- user podczas rejestracji wpisywał swoje dane, akceptował regulamin itp.
- na szarym końcu captcha, która po przeciągnięciu kółka do kosza i kwadratu do pudełka, generowała ajaxem unikalny klucz, który był podpinany do action formularza.
- jeżeli użytkownik pomylił się 3 razy blok na 15min.

Jak dla mnie fajna alternatywa dla standardowej captchy - z coraz bardziej powykręcanymi literami sleep.gif. Tym bardziej, że prawdopodobieństwo trafienia jest niewielkie i zmniejsza się wykładniczo z ilością elementów do przeciągnięcia

Ten post edytował CuteOne 5.09.2012, 10:39:05
Go to the top of the page
+Quote Post
erix
post 5.09.2012, 19:54:27
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Spambooty nie interpretują js a przeglądarka usera tak. (poprawić jeśli się mylę)

A o WSH słyszałeś?

Cytat
Już nie wspominając o tym że ludzie bez JS, zwyczajnie tego nie przejdą.

Jeszcze 2 lata temu zwróciłbym na to uwagę. Teraz przestaje mieć to sens; nawet Opera Mini na Javę ma prowizoryczną obsługę JS, pod konsolą jest elinks. tongue.gif

Cytat
Stosuj reCaptche i po kłopocie, skoro pytasz o takie rzeczy na forum, to Twój serwis i tak nie będzie na tyle atrakcyjny, aby zaprzęgać pod niego jakiegokolwiek bota, chyba że automatycznego.

Nic mnie tak nie denerwuje, jak reCaptcha... tongue.gif

Cytat
Pora zapoznać sie z sblam!

Słusznie. [; Wg mnie skuteczne.



--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
rzymek01
post 5.09.2012, 22:30:06
Post #15





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

Ostrzeżenie: (0%)
-----


Cytat(acidm @ 5.09.2012, 11:13:17 ) *
Ciekawe rozwiązanie tylko ma mały szkopuł , user wykonuje polecenie po czym funkcja w js podbindowana do odpowiednich zdarzeń sprawdza efekt, jeśli test wykonany poprawnie to wykonuje akcje (np. dodanie inputa z odpowiednią wartością do formy).

hehe, może najpierw zapoznasz się z działaniem, a dopiero potem będziesz pisać takie bzdury? smile.gif

Walidacja wywoływana jest po stronie serwera, jeśli znasz sposób na obejście takiej captchy, pisz śmiało smile.gif


--------------------
:]
Go to the top of the page
+Quote Post
acidm
post 6.09.2012, 11:51:13
Post #16





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

Ostrzeżenie: (0%)
-----


A tak na marginesie to czy bot będzie potrafił tylko zinterpretować js który do niego dotrze czy może
także dowolnie dołączyć własny kod js do strony ? Pytam bo już jestem zdezorientowany...
Go to the top of the page
+Quote Post
erix
post 6.09.2012, 13:40:37
Post #17





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
także dowolnie dołączyć własny kod js do strony

Może. Może wszystko, co jesteś w stanie zrobić ze stroną w przeglądarce.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 18:53