dareks_

  • Dokumenty2 821
  • Odsłony754 023
  • Obserwuję432
  • Rozmiar dokumentów32.8 GB
  • Ilość pobrań362 067

Captcha - sposób na boty

Dodano: 6 lata temu

Informacje o dokumencie

Dodano: 6 lata temu
Rozmiar :353.9 KB
Rozszerzenie:pdf

Captcha - sposób na boty.pdf

dareks_ EBooki Infornatyka
Użytkownik dareks_ wgrał ten materiał 6 lata temu.

Komentarze i opinie (0)

Transkrypt ( 4 z dostępnych 4 stron)

CMYK P odczas wysy³ania SMS-ów z bramki internetowej, czy przy sprawdzaniu wolnych domen trzeba przepisaæ kod z grafiki do pola formularza. Powodem tego s¹ nadu¿ycia, które pojawi³y siê wraz z popularnoœci¹ bezp³atnych us³ug. Przyk³adem jest bramka jednego z rodzimych operatorów sieci komórkowych. Umo¿liwia³a ona bezp³atne wysy³anie wiadomoœci SMS na telefony komórkowe z poziomu strony internetowej operatora. Us³uga bardzo atrakcyjna. Nie doœæ, ¿e SMS-y z Internetu s¹ bezp³atne, to (ze wzglêdu na klawiaturê komputerow¹) znacznie wygodniej i szybciej siê je pisze. Wys³anie SMS-a sprowadza siê do wpisania w³asnego numeru, treœci wiadomoœci i wciœniêcia przycisku Wyœlij. Taki mechanizm by³ bardzo wygodny, lecz stwarza³ pole do nadu¿yæ. Bez wiêkszej znajomoœci któregoœ z jêzyków skryptowych (choæby PHP) mo¿na by³o automatycznie, czyli bez ingerencji cz³owieka, rozsy³aæ wiadomoœci. W ten sposób zrodzi³a siê grupa spamerów, którzy na bezp³atnych bramkach SMS chcieli zarobiæ. Sieci komórkowe chc¹ natomiast wypracowywaæ zysk, wiêc nie na rêkê by³ im bezp³atny ³¹cznik miêdzy Internetem a komórk¹. Wprowadzono zatem obrazki zabezpieczaj¹ce (ang. security images), które blokuj¹ roboty-automaty. Z puli kodów-hase³ losowo wybierany jest jeden i umieszczany na grafice. Tak przygotowany obrazek trafia na stronê, by zabezpieczyæ j¹ przed automatami. Cz³owiekowi przepisanie kodu z obrazka do dodatkowego pola nie sprawia ¿adnego problemu. Przerasta to jednak mo¿liwoœci komputera, poniewa¿ obraz jest dla niego wy³¹cznie zbiorem ró¿nokolorowych pikseli. Oczywiœcie mo¿liwe jest wyodrêbnienie z obrazu tekstu przy u¿yciu programów typu OCR (rozpoznaj¹cego tekst z obrazu), ale tylko wówczas, gdy ró¿nica kontrastu pomiêdzy has³em a t³em bêdzie du¿a ró¿nica. Gdy ta ró¿nica jest niewielka, OCR twierdzi, ¿e strona jest pusta (nie zawiera ¿adnego tekstu). Operator sieci komórkowych IDEA wykorzystuje obrazki zabezpieczaj¹ce do ochrony bramki SMS Operator domen narodowych NASK broni obrazkami zabezpieczaj¹cymi formularz do sprawdzania wolnych domen oraz us³ugi WhoIs Portal onet.pl broni swoj¹ wyszukiwarkê przed automatami rejestruj¹cymi Co będzie potrzebne? Aby stworzyæ system do zabezpieczania us³ug przy u¿yciu obrazów, wykorzystamy narzêdzia ogólnie dostêpne na serwerze. Bêdzie potrzebna obs³uga jêzyka PHP z zainstalowan¹ bibliotek¹ GD (+FreeType) oraz dostêp do MySQL. Nie ma specjalnych wymagañ co do wersji biblioteki GD – najlepiej >2.0. Bêdziemy korzystaæ z formatu PNG, lecz mo¿na go zast¹piæ GIF-em. Baza danych MySQL bêdzie nam potrzebna do PHP INTERNET.marzec.2005104 NA CD NEWSY Z OK£ADKI FIRMA MAGAZYN PROGRAMY WARSZTAT Ochronausługprzyużyciuobrazkówzabezpieczających Czasy, w których za pomoc¹ jednego formularza mo¿na by³o zarejestrowaæ stronê we wszystkich katalogach i wyszukiwarkach bezpowrotnie przeminê³y. Wszystkiemu winne s¹ niepozorne obrazki zabezpieczaj¹ce, które zmuszaj¹ u¿ytkownika do przepisania ukrytych w nich hase³. Pawe³ Grzesiak SKUTECZNY SPOSÓB NA ROBOTY INTERNETOWE Wszystkie przykłady zaprezentowane w tym artykule zostały zamieszczone na dołączonej płycie CD w katalogu Warsztat_PHP.

CMYK przechowywania hase³, które trafi¹ póŸniej na obrazki. Stworzymy w niej tylko jedn¹ tabelê. Bêdzie sk³ada³a siê z 5000 rekordów, czyli 5000 ró¿nych kodów, a jej rozmiar to ok. 0,5 MB. Jak to działa? Napiszemy trzy skrypty: instalacyjny – pozwoli na stworzenie odpowiedniej tabeli i wygenerowanie hase³ do obrazków; graficzny – na poczekaniu wygeneruje odpowiedni obrazek; steruj¹cy – bêdzie zawiera³ formularz z naszym obrazkiem zabezpieczaj¹cym. Je¿eli do formularza zostanie poprawnie wpisane has³o, skrypt wyœwietli podziêkowanie. Je¿eli Ÿle, wyœwietli komunikat o b³êdnym haœle. Tak wygl¹da gotowy mechanizm do zabezpieczenia obrazów Baza danych Rozpoczynamy od stworzenia tabeli do przechowywania wszystkich hase³. Bêdzie ona sk³ada³a siê z dwóch pól: „hash”, pole – g³ówny klucz tabeli, typu varchar, 32 znaki, jest to has³o zakodowane algorytmem szyfruj¹cym MD5, „code”, pole – unikalne, typu varchar, 6 znaków, jest to has³o, które uka¿e siê na obrazku. W postaci SQL, kod potrzebny do utworzenia tabeli bêdzie wygl¹da³ nastêpuj¹co: CREATE TABLE mi_secimg ( hash VARCHAR(32) NOT NULL, code VARCHAR(6) NOT NULL, PRIMARY KEY (hash), UNIQUE (code) ); Za³o¿yliœmy, ¿e has³o na obrazku bêdzie sk³ada³o siê z 6 znaków. Tê liczbê mo¿na oczywiœcie rozszerzyæ. Zakodowane has³o jest potrzebne poniewa¿ mamy dwa skrypty: steruj¹cy i generuj¹cy obrazek. Skrypt generuj¹cy obrazek musi wiedzieæ, które has³o ma umieœciæ na obrazku, a skrypt steruj¹cy musi wiedzieæ, czy wpisany przez u¿ytkownika kod jest prawid³owy. W tym celu potrzebna jest baza danych. Je¿eli nie chcemy u¿ywaæ bazy, bo nie mamy do niej dostêpu, mo¿na zast¹piæ j¹ baz¹ danych opart¹ o pliki tekstowe. To jednak mniej wygodne rozwi¹zanie, dlatego w artykule korzystamy z bazy danych. Wiemy ju¿ jak ma wygl¹daæ tabela. Napiszemy wiêc skrypt instalacyjny, który ma za zadanie: po³¹czyæ siê z baz¹ danych, utworzyæ tabelê mi_secimg, wygenerowaæ losowo kody 6-znakowe w iloœci 5000 i ich zakodowane odpowiedniki, wprowadziæ wygenerowane kody do bazy danych. Skrypt rozpoczynamy od zmiennych odpowiedzialnych za konfiguracjê:W œrodkowej pêtli „for” tworzy siê has³o. Pêtla zostanie wykonana tyle¿ razy, ile jest znaków w haœle. Za ka¿dym razem zostanie wygenerowany w niej jeden znak. Za wygenerowanie losowego znaku odpowiedzialna jest funkcja rand(). Wybiera ona losowo liczbê z przedzia³u 0 do (liczba znaków w tablicy) 1. W ten sposób wylosowany znak trafia do zmiennej $code, która z ka¿d¹ iteracj¹ poszerza siê o jeden znak, by osi¹gn¹æ wartoœæ 6 znaków ($p<$codeLenght). Gdy kod zostanie wygenerowany, nastêpuje dodanie go do bazy. Poniewa¿ w zmiennej $code kryje siê has³o, mo¿na ³atwo je przekazaæ do zapytania, koduj¹c drugie pole algorytmem MD5 przy u¿yciu funkcji md5(). Du¿a pêtla zatacza ko³o kolejny raz i resetuje has³o (zmienn¹ $code), a¿ do wyczerpania puli 5000 hase³. PHP INTERNET.marzec.2005 105 WARSZTAT PROGRAMY MAGAZYN FIRMA Z OK£ADKI NEWSY NA CD

CMYK Skrypt sterujący Skrypt instalacyjny nie bêdzie ju¿ potrzebny. Zaraz po jego wykonaniu mo¿na go usun¹æ z serwera. Teraz przysz³a pora na utworzenie skryptu, który bêdzie odpowiedzialny za pracê ca³ego mechanizmu. Przyk³adowy skrypt bêdzie zabezpiecza³ us³ugê „dodawania strony internetowej do katalogu”. Ze wzglêdu na oszczêdnoœæ miejsca ca³y formularz bêdzie sk³ada³ siê jedynie z pola do wprowadzenia adresu strony oraz pola do przepisania has³a z obrazka. Zadania skryptu: po³¹czyæ z baz¹ danych, wybraæ losowo has³o, które znajdzie siê na obrazku, wyœwietliæ formularz z obrazkiem wraz z ukrytym polem zawieraj¹cym zakodowane has³o, sprawdziæ, czy formularz zosta³ wys³any (je¿eli tak – sprawdziæ, czy has³o jest poprawne), wyœwietliæ podziêkowanie i dodaæ stronê do kolejki oczekuj¹cych na dodanie lub wyœwietliæ informacje o b³êdnym haœle. Zaczniemy od po³¹czenia z baz¹ i utworzenia podstawowego kodu witryny:Zabezpieczona obrazkiem us³ugaTeraz stworzymy formularz, który bêdzie pozwala³ na dodawanie nowych stron do katalogu witryny xyz. Bêdzie on sk³ada³ siê z pola do wpisywania adresu, obrazka, pola do wpisywania kodu z obrazka oraz ukrytego pola kryj¹cego „hash”, czyli zakodowane has³o.

Wpisz adres strony, któr¹ chcesz dodaæ do naszego katalogu:


”>
Przepisz kod z powy¿szego obrazka:


”>
W powy¿szym kodzie wykorzystujemy wielokrotnie hash, który jest zakodowanym has³em z brakiem mo¿liwoœci odzyskania. Pierwsz¹ czynnoœci¹ jest pobranie z bazy danych losowego rekordu. Odbywa siê to poprzez uporz¹dkowanie elementów tabeli mi_secimg w sposób losowy, a nastêpnie pobranie jednego rekordu. Wynikiem zapytania jest nasz losowy hash. W tym momencie nie wiemy oczywiœcie jak brzmi kod. Hash przekazujemy do naszego obrazka. Skrypt o nazwie image.php odpowiada bowiem za generowanie obrazu. Jako parametr podajemy mu hash, czyli nasze zakodowane has³o. Gdybyœmy w tym miejscu przes³ali rzeczywisty kod, nie mielibyœmy ju¿ do czynienia z zabezpieczeniem. I tu jest odpowiedŸ na pytanie, po co to zakodowane has³o. Warto zauwa¿yæ, ¿e nasz hash trafia równie¿ do ukrytego pola. Oznacza to, ¿e po wys³aniu formularza nie stracimy tej zmiennej, bêdziemy mogli j¹ póŸniej odczytaæ z tablicy $_POST[”hash”]. W ten sposób bêdziemy w stanie sprawdziæ, czy has³o, które poda³ u¿ytkownik, jest zgodne z has³em, które jest przydzielone do tego hasha. ¯eby zamieniæ hash na normalne has³o, bêdziemy musieli wykonaæ jedno zapytanie. Pobierze ono rekord, który zawiera w³aœnie ten hash. Wtedy oba has³a zostan¹ porównane – to wprowadzone przez u¿ytkownika i to pobrane z bazy danych. Zobaczymy, jak to prezentuje siê w praktyce:Pierwsza linia mo¿e nieco przyt³aczaæ tych, którzy maj¹ ma³o do czynienia z wyra¿eniami regularnymi. Funkcja ereg() zwraca prawdê, je¿eli element tablicy $_POST[’hash’] spe³nia szablon ”[a-z0-9]{32}”. Oznacza to, ¿e ten element tablicy ma siê sk³adaæ z dok³adnie 32 znaków. Ka¿dy z tych znaków mo¿e przyj¹æ wartoœæ od a do z i od 0 do 9. Ma³pa przed ca³¹ funkcj¹ jest po to, by funkcja nie zwraca³a b³êdu. Ma to miejsce wtedy, gdy wprowadzamy dane do formularza. Wtedy ¿adne dane nie znajduj¹ siê w zmiennej $_POST[’hash’] i ereg() zwraca³oby b³¹d. Instrukcja warunkowa „if” sprawdza czy kody s¹ zgodne ze sob¹. Je¿eli nie, to wyœwietla b³¹d i prosi u¿ytkownika o ponowne wpisanie kodu. W takim przypadku skrypt powinien „pamiêtaæ” adres URL, który u¿ytkownik wprowadzi³. Ten niestety nie ma na tyle rozbudowanej obs³ugi b³êdów. Je¿eli oba kody s¹ ze sob¹ zgodne, skrypt wyœwietla podziêkowania. W tym momencie nale¿a³oby równie¿ wykonaæ czynnoœci zwi¹zane z dodawaniem strony do katalogu. Najprawdopodobniej podany przez u¿ytkownika adres zosta³by zapisany do jakiejœ bazy danych, by móg³ siê nim zaj¹æ redaktor odpowiedzialny za dodanie strony do wyszukiwarki. Generowanie obrazka W tej chwili skrypt image.php jest jak czarna skrzynka. Wiemy tylko, ¿e tworzy obraz na podstawie hashu dostarczanego w postaci parametru. Wygl¹d gotowego obrazka zabezpieczaj¹cego Skrypt powinien: po³¹czyæ siê z baz¹ danych, sprawdziæ, czy zosta³ podany jako parametr hash, pobraæ has³o z bazy danych, maj¹c do dyspozycji hash, sprawdziæ, czy has³o jest poprawnej d³ugoœci (ktoœ móg³ spróbowaæ podaæ nieprawid³owy hash), rozpocz¹æ tworzenie obrazka poprzez wstawienie t³a, utworzyæ napis na obrazku, czyli nasz kod, wyœwietliæ gotowy obrazek u¿ytkownikowi. PHP INTERNET.marzec.2005106 NA CD NEWSY Z OK£ADKI FIRMA MAGAZYN PROGRAMY WARSZTAT

Konfiguracja skryptu: