Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Blokada czasowa w formularzu
Forum PHP.pl > Forum > Przedszkole
Szunaj85
Chciałbym stworzyć blokadę czasową w formularzach, które mam na stronie przy pomocy PHP.
Nie chcę blokować użytkowników, ale boty. Moim celem jest dodatkowa obrona przed spamem.
Czy to dobre rozwiązanie i w jaki sposób powinien wyglądać taki skrypt?
zend
Zapisujesz w sesji kiedy ostatni raz użytkownik wysłał formularz, jeśli jeśli nie może wysłać formularza to nie obsługujesz akcji zapisu, możesz też nie wyświetlić formularza, choć w przypadku botów może to nic nie dać, możesz też pod formularzem wyśweitlać zdjęcia piesków i kilka innych, jeżeli użytkownik zaznaczy poprawnie wszystkie pieski przeszedl walidacje guitar.gif
Belze
dokładnie, najlepszy jest autorski skrypt sprawdzający człowieczeństwo. np. pytanie "ile to jest 2+2" albo coś w ten deseń smile.gif
Szunaj85
Cytat
dokładnie, najlepszy jest autorski skrypt sprawdzający człowieczeństwo. np. pytanie "ile to jest 2+2" albo coś w ten deseń
Jeśli chodzi Ci o coś na wzór "captcha", to już takie zabezpieczenia posiadam.
Tak jak napisałem wcześniej, moim celem jest dodatkowa obrona przed spamem przy pomocy blokady czasowej. Pytam się jak to najlepiej zrobić.
tehaha
najlepiej tak jak @zend napisał, do sesji zapisujesz czas w którym użytkownik wysłał wiadomość albo czas do którego formularz ma być nie aktywny, i przy wysyłaniu formularzu porównujesz ten czas z obecnym, proste i skuteczne
zend
Pisałem przecież post wyżej : w momencie próby zapisania formularza sprawdzasz czy istnieje w sesji wpis określający ostatnią modyfikację formularza, jeżeli nie istniej zapis możliwy i zapisujesz do tej zmiennej sesyjnej bierzący czas i tak w koło macieju. PS ja o tych pieskach pisałem na serio, to jest bardzo skuteczne zabezpieczenie w dodatku przyjazne użytkownikom, zarzucił bym linkiem ale nie pamiętam gdzie ja to widziałem

Pobierasz z sieci 100 zdjęć piesków/kotków/drzew i 100 innych zdjęć, zapisujesz w bazie co jest pieskiem a co innym zdjęciem, pibierasz z bazy kilka zdjeć piesków i kilka innych zdjęć, zadaniem użytkownika jest zaznaczyć wszystki pieski, jeżeli tego dokona oznacza to że nie jest botem
Szunaj85
Cytat
w momencie próby zapisania formularza sprawdzasz czy istnieje w sesji wpis określający ostatnią modyfikację formularza, jeżeli nie istniej zapis możliwy i zapisujesz do tej zmiennej sesyjnej
Ja czytałem, że sesje łatwo ominąć i lepiej bazować na IP.
Cytat
Ja o tych pieskach pisałem na serio, to jest bardzo skuteczne zabezpieczenie w dodatku przyjazne użytkownikom, zarzucił bym linkiem ale nie pamiętam gdzie ja to widziałem
Z tego co pamiętam to Google wprowadziło takie rozwiążanie.
zend
Tak, wystarczy że boot nie wyśle ciasteczek i już masz problem, no chyba że postować mogą tylko zalogowani użytkownicy, a to już inna bajka smile.gif
tehaha
ale jaki bot? przecież napisałeś, że masz captcha, więc chyba rozważamy tu jedynie zabezpieczenie przed ludzkimi spamerami? przecież robot wcale ma nie wysyłać spamu a nie, że tylko co kilka minut
Szunaj85
Cytat
przecież napisałeś, że masz captcha
Owszem mam, ale zawsze istnieje ryzyko, że zostanie złamana. Stąd mój pomysł na takie dodatkowe zabezpieczenie.
Cytat
rozważamy tu jedynie zabezpieczenie przed ludzkimi spamerami? przecież robot wcale ma nie wysyłać spamu a nie, że tylko co kilka minut
Zgadza się, co proponujesz?
tehaha
proponuję limit czasowy oparty o sesje + re-captcha i na pewno będzie skutecznie, albo jakiś taki innowacyjny sposób z liczeniem zwierzątek:) brzmi sympatycznie i skutecznie
Szunaj85
Chciałbym jednak spróbować wykonać skrypt PHP oparty o IP i pliki.
Wiem jak sprawdzić kogoś IP, jak zapisać IP do pliku, jak odczytać IP z pliku,
ale nie wiem jak sprawdzić czy to samo IP wysyłało np. e-maile z mojej strony 3 razy w jakimś przedziale czasowym, a jeśli tak było to komunikat lub blokada.
tehaha
to już lepiej oprzyj to o bazę mysql niż pliki
zegarek84
Cytat(Szunaj85 @ 2.06.2010, 12:49:46 ) *
Ja czytałem, że sesje łatwo ominąć i lepiej bazować na IP.

pytanie skąd ktoś kto nie ma dostępu do serwera wie co jest w sesji?? niby jak ominąćquestionmark.gif - ktoś wspomniał, że nie wyśle ciasteczka - nie ma identyfikatora sesji więc nie ma sesji - skoro nie ma sesji to jest to przecież początek sesji... jeśli nie ma spełnionych warunków jakie masz zapisane w sesji po prostu czegoś nie robisz....

dalej czy bot musi czytać wszyściutkie pliki?? - nawet te z tła w css?? - przecież można np. jakiś z plików wysłać przez skrypt i dodać do sesji czy został wysłany [zaraz zwalą się posty, że odcinamy tych z przeglądarkami tekstowymi ;D]... pomysłów na własne i proste zabezpieczenia jest masa... a jeśli komuś się nie wczytują np. style css [jeśli obrazki Wam nie pasują] generowane dynamicznie ze znacznikiem timestap coby się nie buforowały to jest ufokiem o.0 - sorki, ale nie popadajmy ze skrajności w skrajność... sesje masz na serwerze - u uzyszkodnika masz tylko identyfikator sesji... pisałeś coś o sprawdzaniu ip - no przecież w sesji możesz to też se zapisać itd....
Ulysess
skoro jest o zabezpieczeniach większośc uzywa tokenów a ja wpadłem na dużo prostrzy sposób..
formularz z opcja select i np do wyboru dni tygodni i pytanie jaki jest dzień tygodnia , oczywiście dni nie były by po koleji tylko losowo . co o tym sądzicie ?
zegarek84
Cytat(Ulysess @ 2.06.2010, 18:03:21 ) *
skoro jest o zabezpieczeniach większośc uzywa tokenów a ja wpadłem na dużo prostrzy sposób..
formularz z opcja select i np do wyboru dni tygodni i pytanie jaki jest dzień tygodnia , oczywiście dni nie były by po koleji tylko losowo . co o tym sądzicie ?
pisałeś kiedyś bota?? - wszystko co jest na stronie jest łatwo dostępne - więc bez problemu i bez wysiłku można napisać bota na taką stronę [to, że coś jest losowo nie znaczy, że nie wysyłasz wartości którą łatwo pobrać z kodu strony]...

a pro po captcha to zawsze [najczęściej np. w sesji] gdzieś się zapisuje informację co powinno się znaleźć w formularzu - po prostu uzyszkodnikowi wysyła się obrazek - ale gdy on się łączy z obrazkiem [czy dowolnym plikiem] wysyła identyfikator sesji do skryptu... i tu właśnie najbardziej uproszczone capchta którego by nie było, czyli to co wspomniałem, to podanie któregoś z plików gdzie by było odnotowane, że został pobrany [np. jakiś obrazek] - czyli dany plik musiał by być wysłany przez skrypt - aby było trudniej zgadnąć jaki to plik to pasuje jeszcze skorzystać z htaccess by wszystkie pliki wyglądały normalnie i tu w sesji zanotować, ze pobrany plik [że to jest uzyszkodnik] [oczywiście coby dany plik nie był buforowany pasuje wysłać odpowiednie nagłówki]... i nie ustawia się tutaj żadnego cookies ani nic dodatkowo - co jeszcze bardziej utrudnia namierzenie adresu który powinno się odwiedzić by odblokować sobie daną funkcjonalność - co za tym idzie?? - żegnamy się z uciążliwym capchta a ktoś kto próbuję napisac bota niech w ciemno strzela jaki to plik...

ok... ktoś powie - załadować wszystkie linki rzez bota jakie są na stronie jako obrazki, css, lub js... więc niech to będzie np. adres który jest dostępny po wczytaniu css - czyli jakiś obrazek z tła strony... - i jaki tu problem?? - fakt faktem da się to obejść ale wszystko da się obejść...
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.