Błąd
  • Błąd podczas ładowania danych z kanału informacyjnego
ZasobyNa Twoją witrynęSpam stop! - Security Images

Spam stop! - Security Images

Pakiet Security ImagesZadowalającą ochronę antyspamową można w Joomla! zapewnić za pomocą mało znanego bota integrującego BadBehavior czy usługi Akismet, wykorzystanej np. w mXComment. Decydując się na powszechniejszy system CAPTCHA [’kapcza’], masz praktycznie jedyny sensowny wybór - komponent Waltera Cedrica Security Images.

Czym jest Security Images?

Security Images chroni przed dostępem automatów strefy przeznaczone dla ludzi: formularze rejestracyjne i kontaktowe, moduły logowania czy komponenty umożliwiających dodawanie własnych treści, takich jak księgi gości, komentarze czy forum, narażonych na wykorzystanie przez internetowych rozbójników do brutalnej reklamy.

Nie daj się nabrać
Nie daj się nabrać! To nie kapcza, to Melisa Trojan! Wirus wykorzystywany w atakach Free porn

Security Images posługuje się metodą CAPTCHA. Akronim ten w swobodnym tłumaczeniu oznacza kompletny system sprawdzania, kto dokonuje wpisu - człowiek czy maszyna (robot, pajączek). Potocznie ’kapczą’ nazywamy obrazki, na których znajduje się treść testu sprawdzającego.

Zasada działania jest prosta. Kod przekazywany jest w postaci graficznej, łatwej do odczytania przez człowieka, trudniejszej dla maszyny, zwłaszcza, że tło obrazków może być dobierane losowo, losowo można ustalać rozmiar, kolor i krój czcionek oraz dodawać zakłócenia w postaci siatki kolorowych linii czy kropek.

Walory Security Images

Zapewne w tytule tej części lepiej byłoby użyć bardziej neutralnego słowa, bowiem CAPTCHA może być tylko złe lub gorsze. Dobre nie istnieje. Owszem, przeszkadza robotom, ale i komplikuje korzystanie z witryn użytkownikom: ogranicza dostępność, wymusza czynności, za które w gruncie rzeczy odpowiada wydawca. A przy tym obrazki generowane przez system nie zawsze są wystarczająco czytelne dla człowieka i nie zawsze za trudne do pokonania przez automaty. Krytyczny głos w sprawie CAPTCHA opublikowało również W3C.

Ale i rozwiązania z gruntu złe swoje walory mają. A Security Images co najmniej kilka.

Po pierwsze, Security Images można łatwo zintegrować z Joomla! i dodawanymi do Joomla! komponentami. Wystarczy w odpowiednie miejsca wpisać kilka linijek kodu podanych przez autora, który dla formularzy w samym Joomla! wydaje również specjalne łatki.

Po drugie, komponent oferuje aktualnie nie jedno, ale pięć rozwiązań do wyboru, pięć silników generujących obrazki ochronne:

  • Core w wersji 1.1,
  • Freecap w wersji 1.4,
  • HnCaptcha w wersji 1.0,
  • Calculator w wersji 1.0,
  • Watercap w wersji 1.0,

Po trzecie, proste narzędzia konfiguracyjne komponentu pozwalają zapanować niemal nad wszystkimi aspektami obrazków ochronnych.

Dla wydawców witryn jest zatem rozwiązaniem wygodnym.

Instalacja

Instalację komponentu przeprowadzamy jedną ze standardowych metod w Joomla! - z pakietu instalacyjnego bądź z rozpakowanego archiwum umieszczonego na serwerze.

Spora objętość komponentu sprawia, że pierwsza z metod kończy się niekiedy niepowodzeniem - błędem spowodowanym przekroczeniem czasu przeznaczonego na wykonanie skryptu (timeout). Trzeba w takim przypadku usunąć utworzone przez instalatora foldery w katalogach /administration/components i /components, a następnie powtórzyć instalację drugim sposobem.

Konfiguracja

Konfiguracja obejmuje cztery zadania:

  • konfigurację globalną: wybór silnika CAPTCHA i dokonanie kilku ustawień ogólnych,
  • konfigurację wybranego silnika,
  • instalację łatek dla Joomla!: jeśli chcemy chronić standardowe formularze,
  • integrację składników, które ma obsługiwać Security Images.

Konfiguracja globalna

Wybór silnika

Po wybraniu z menu administracyjnego pozycji Security Images ⇒ Konfiguracja globalna znajdziemy się w edytorze ustawień, zawierającym cztery karty. Na pierwszej dokonujemy wyboru jednego z pięciu silników generujących CAPTCHA.

Na początku warto poznać możliwości każdego z nich, by dokonać rzeczywiście przemyślanego wyboru. Zamieszczona na pierwszej karcie ilustracja daje wprawdzie pewien pogląd na efekty, jakie można uzyskać, ale podstaw wyboru nie dostarczy.

Najpierw zaznaczamy wybrany silnik na liście możliwości (pod ilustracjami), a potem, na kolejnej liście zaznaczamy posiadaną wersję silnika.

Jeśli zaznaczymy niepoprawny numer wersji, to w kolejnym kroku - przy próbie konfiguracji silnika - komponent zgłosi komunikat o niedostępnych plikach. Należy w takim przypadku sprawdzić poprawność dokonanego tu ustalenia. Skrypty silników instalator komponentu umieszcza w katalogach: /administrator/components/com_securityimages/pluginsA/nazwa_silnika/numer_wersji/ oraz /components/com_securityimages/plugins/nazwa_silnika/numer_wersji/. Jeśli ustawienie w edytorze konfiguracji kończy się błędem, trzeba sprawdzić, czy rzeczywiście dysponujemy dodatkami wyszczególnionymi na listach możliwości.

Łatki dla Joomla!

Na drugiej z kart konfiguracyjnych decydujemy, w jakich przypadkach włączyć Security Images. Karta umożliwia uaktywnienie ochrony:

  • w module Logowanie,
  • w formularzu Rejestracja,
  • w formularzu Nie pamiętam hasła,
  • w formularzach komponentu Kontakty,
  • w komponentach Arthura Konze Akobook (od wersji 2.0.5) i Akocomment (od wersji 3.0).

Dokonane tu ustawienia będą działać pod warunkiem, że zainstalujemy odpowiednie łatki, albo zmodyfikujemy oryginalne skrypty Joomla! W przypadku dodatkowo instalowanych komponentów trzeba jeszcze niekiedy uaktywnić ochronę w ich macierzystych konfiguratorach.

Ogólne i Dzienniki

Na dwu pozostałych kartach konfigurujemy mniej istotne szczegóły. Możemy zdecydować:

  • o wyłączeniu funkcji komponentu,
  • o wyłączeniu ochrony dla zalogowanych użytkowników,
  • o wyświetlaniu odnośnika do strony projektu,
  • o włączeniu debuggera, by wykryć źródło problemów w korzystaniu z komponentu,
  • o ukryciu przycisku Odśwież umożliwiającego zmianę nieczytelnego obrazka,
  • o zakresie informacji rejestrowanych w dzienniku zdarzeń i przesyłaniu dziennika administratorowi.

Dostępna na karcie Ogólne opcja Dźwięk nie ma aktualnie praktycznego znaczenia - w omawianej tu wersji 4.2.2 komponentu obsługa dźwięku nie została jeszcze zaimplementowana.

Core 1.1 Spam - STOP!

Poznanie możliwości konfiguracyjnych komponentu najlepiej rozpocząć od wyboru silnika Core 1.1. w jego opcjach znajdziemy większość ustawień dostępnych w pozostałych rozwiązaniach. Efektem zastosowania Core jest obrazek z tekstem kodu weryfikującego.

Właściwości tekstu

Tekst kodu generowany jest z wybranego zestawu znaków, w tym znaków spoza alfabetu łacińskiego, jeśli w opcji Rozszerzony zestaw znaków zaznaczymy Tak.

Możemy określić ilość znaków w kodzie albo zdecydować, że jego długość będzie ustalana losowo w granicach określonych przez dozwolone minimum i maksimum.

Możemy ustalić kolor, rozmiar i krój czcionki albo zarządzić, że będą one generowane losowo w granicach określonych ustawieniami.

Dodatkowym utrudnieniem dla automatów (ale i użytkowników!)może być pochylanie znaków w kodzie o losowo ustalany kąt nachylenia, a także ich nierównomierne rozłożenie.

Właściwości tła

Tłem dla kodu jest grafika. W standardowej wersji mamy do dyspozycji 48 obrazków ? 24 większe, o rozmiarach 200 x 35px i 24 mniejsze o rozmiarach 150 x 30 px. Możemy wybrać jeden z nich lub zaznaczyć kilka, czy nawet wszystkie, zjednego lub obu zestawów.

Dodatkowo można sprawić zaznaczając Tak w opcji Dodaj szum, że na oryginał zostaną nałożone generowane losowo kolorowe linie.

CAPTCHA

Obrazki tła zapisane są w formacie PNG. Nie są to wszakże obrazki wyświetlane na ekranach użytkowników. Służą jedynie do stworzenia CAPTCHA, obrazka z kodem i tłem. System generuje CAPTCHA w formacie ustalonym w ustawieniach ? może to być zarówno JPG, jak i PNG czy GIF.

CAPTCHA z silnika Core|0|Obrazki Cahptcha generowane przez silnik Core

Efekt dokonanych ustawień można sprawdzić w trakcie konfigurowania silnika. Wystarczy ? po zapisaniu ustawień - kliknąć przycisk Odśwież tuż nad kartami edytora konfiguracji.

Warto poświecić chwilę czasu, by dobrać zarówno odpowiednie tła, jak i rozmiar oraz kolorystykę, krój i kąt nachylenia czcionek, biorąc pod uwagę nie tylko automaty, przed którymi chcemy uchronić witrynę, ale i utrudnienia, jakie przecież narzucamy użytkownikom.

Upewnijmy się, że użytkownicy bez większego trudu potrafią rozróżnić zwłaszcza cyfrę 1 i literę l, cyfrę 5 i literę S, cyfrę 0 i wielką literę O. Gdy przyjdzie im wielokrotnie powtarzać kod, mogą się zniechęcić do korzystania z witryny.

Ilość powtórzeń

Zawsze trzeba zakładać, że nawet użytkownicy z sokolim wzrokiem mogą otrzymać do rozszyfrowania tekst niezbyt czytelny. Trzeba się również liczyć z pomyłkami przy przepisywaniu tekstu sprawdzającego, nawet gdy zostanie poprawnie odczytany.

Na karcie Tekst możemy ustalić dopuszczalną ilość powtórzeń na żądanie użytkownika. w świeżo zainstalowanym komponencie zetkniemy się tutaj z liczbą nie do przyjęcia: 2200 powtórzeń wystarczy zapewne każdemu automatowi, żeby rozpoznał tekst za pomocą systemu OCR (czytnika do optycznego rozpoznawania znaków). 10 to ilość dostateczna dla człowieka, a robotom na pewno uniemożliwi forsowne ataki (BF attacks).

W polu przeznaczonym na określenie ilości powtórzeń można się również posłużyć znakiem mniejszości, wpisując np. <5, co wystarczy dla dużej grupy użytkowników, w tym i tych cierpliwszych, bo zirytowanym można się poczuć po drugiej czy trzeciej nieudanej próbie.

Aby użytkownicy mogli żądać powtórzenia, w konfiguracji globalnej nie można wyłączyć przycisku Odśwież.

Ochrona przed Free porn

W parametrach Core 1.1 znajdziemy ponadto kartę z ustawieniami ochrony przed wykorzystaniem CAPTCHA w atakach free porn. Łatwo się przekonać, że autor jeszcze tych opcji nie zamplementował. Próba zmiany ustawień nie przynosi żadnych efektów.

Freecap 1.4 Spam - STOP!

Autor FreeCap, Howard Yeendwww.puremango.co.uk podkreśla w krótkiej charakterystyce swego skryptu, że oferuje nie tylko podstawowe cechy CAPTCHA - zniekształcony tekst, losowe tło, ale przede wszystkim skupia się na bezpieczeństwie. Podkreśla, że o ile wiele CAPTCHA jest względnie odpornych na czytniki optycznego rozpoznawania znaków, to zawodzi w przypadkach brutalnych ataków, opartych na ponownym wykorzystaniu sesji.

Metody ochrony

Do ochrony przed brutalnymi atakami projektant FreeCap wykorzystał szyfrowanie sesji. Ponadto, aby zapobiegać rozpracowaniu CAPTCHA przez hakerów posługujących się ’free porn’, dodał możliwość umieszczenia na obrazku specjalnego komunikatu dla użytkowników.

Sesje mogą być szyfrowane w FreeCap 1.4 jedną z trzech metod - md5 (w starszych PHP od wersji 3), sha1 (wymaga PHP4.3.0 i wyższej) oraz crc32 (PHP od wersji 4.0.1).

Ochrona przed ominięciem CAPTCHA

Zastosowanie CAPTCHA musiało spowodować poszukiwanie metod ominięcia tej przeszkody. Aby rozpracować bardziej wyrafinowane rozwiązania, skorzystano z trojana. z opisem działania jednej z jego odmian możemy zapoznać się na stronie www.heise-online.pl. Niczego nieświadomemu użytkownikowi fałszywego CAPTCHA z obrazkiem, np. striptizerką. Poprawne wpisanie kodu z obrazka nagradzane jest zdejmowaniem kolejnych części garderoby.

Fałszywa CAPTCHA Free porn
Fałszywa CAPTCHA: Free porn - Im więcej odczytanych kodów, tym panienka uboższa w garderobę (ilustracje z witryny: http://pandalabs.pandasecurity.com)

Najkrócej rzecz ujmując, trojan służy do zgromadzenia informacji pozwalających bez skomplikowanych i długotrwałych procedur optycznego rozpoznawania znaków (OCR) rozpracować popularne systemy ochrony, a stąd już prosta droga do zakładania na witrynach fałszywych kont i wykorzystania ich do brutalnych ataków spamerskich, głównie pornograficznych.

Konfiguracji tej profilaktycznej ochrony przed omijaniem CAPTCHA dokunujemy na karcie Hakowanie [Hackers].

Pierwsza z opcji ? Chroń CAPTCHA [CAPTCHA circumvention] ? to przygotowanie ochrony. Aby zapobiec wykorzystaniu naszych CAPTCHA w opisanych powyżej procedurach, na wygenerowanym obrazku umieszczamy tekst skierowany do internatów, typu: Nie wpisuj tego kodu, jeśli nie jest to www.moja_witryna.com. Tekst można rozmieścić w jednej lub w dwóch liniach. Unikać należy znaków spoza alfabetu łacińskiego - polskie ą ę ć i inne nie będą poprawnie wyświetlane.

Skuteczność tego zabiegu zależy, oczywiście, od reakcji internautów, do których trafią obrazki z naszej witryny.

W następnej z opcji decydujemy, który z komunikatów zostanie umieszczony na obrazku pierwszy, drugi lub oba. Aby komunikat znalazł się na obrazku, trzeba jeszcze w opcję Chroń CAPTCHA zaznaczyć pole wyboru Tak.

Frecap

Tekst

FreeCap pobiera kod dla CAPTCHA ze zdefiniowanego wcześniej słownika albo generuje losowo z dostępnego zestawu znaków. Kody ze słownika są łatwiejsze dla ludzi, ale i dla narzędzi spamerskich. Teksty generowane losowo są wprawdzie trudniejsze, ale bardziej obciążają serwer.

Słownik znajduje się w folderze /components/com_securityimages/plugins/freecap/1.4/dict/. Foldery z czcionkami i obrazkami również umieszczone są w zestawie skryptów obsługujących stronę frontową. Katalogi słownika, czcionek i obrazków można ochronić dodatkowo plikiem .htaccess.

Podobnie jak w przypadku silnika Core, konfiguracja FreeCap umożliwia również określenie długości generowanego tekstu.

Znaki

Standardowy asortyment czcionek jest niewielki, liczy zaledwie 5 zestawów, wszystkie o stałej szerokości (35px) złożone tylko z małych liter. Zaawansowani użytkownicy mogą jednak skorzystać z kreatora udostępnionego na stronie www.puremango.co.uk, by tworzyć własne zestawy. Skrypt kreatora dostarcza odpowiednich narzędzi kontroli rozmiaru fontów. Do stworzenia własnego bezpieczniejszego zestawu czcionek można również posłużyć się konwerterem GDFontGenerator dostępnym na www.philiplb.de.

Tło

Tło CAPTCHA stanowić mogą w przypadku FreeCap linie, zawijasy bądź obrazek, w tym przezroczysty. Tekst można umieścić nad tłem albo scalić z tłem. Skrypt wykorzystuje technikę morfingu. Administrator może przy tym zdecydować o jej uaktywnieniu nie tylko przy scalaniu kodu z tłem, ale także do uzyskania efektu rozjaśnionego tła i znaków.

Powtórzenia

Jak we wszystkich pozostałych silnikach, możemy tutaj również ustalić dopuszczalną ilość powtórzeń na wypadek, gdyby kod na obrazku był mało czytelny .

CAPTCHA

Obrazki wynikowe FreeCap generuje w formacie ustalonym przez administratora. Może to być JPG z białym tłem zamiast przezroczystości, GIF lub PNG. Obrazki w formacie GIF mogą mieć przezroczyste tło, pod warunkiem, że na serwerze mamy zainstalowaną bibliotekę GD2 (GD nie obsługuje GIF-ów). Warto też przypomnieć, że starsze przeglądarki mogą nie obsługiwać formatu PNG.

HnCaptcha 1.0 Spam - STOP!

HnCaptcha niewiele różni się od silnika Core. Horst Nogajski dopracował projekt, którego podstawy opublikował Julien Pachet na www.phpclasses.org,. Wersję demonstracyjną możemy zobaczyć na stronie autora.

Projektant HnCaptcha wyszczególnia następujące walory swego rozwiązania:

  • obsługuje wcześniejszych wersji GD niż 2
  • zapobieganie hakowaniu,
  • opcjonalne stosowanie bezpiecznej palety kolorów,
  • określanie limitu powtórzeń,
  • generowanie nowego CAPTCHA z innym kluczem w przypadku odświeżania,
  • losowa obsługa wielu krojów czcionek TrueType,
  • minimalna ilość niezbędnych parametrów: ilość znaków, minimalny i maksymalny rozmiar czcionki,
  • ochrona parametrów przesyłanych metodą GET,
  • możliwość uruchomienia debuggera podczas testowania konfiguracji.

CAPTCHA wygenerowany przez hnCaptcha
CAPTCHA wygenerowany przez hnCaptcha

Walter Cedric w implementacji dla Joomla! uzupełnił zestaw ustawień komponentu o ochronę CAPTCHA przed wykorzystaniem w atakach Free porn.

Watercap 1.0

Spam - STOP! Autor silnika Watercap, Pavel Simakov (www.softwaresecretweapons.com), zdegustowany skutecznością ataków na fora phpBB mimo stosowania obrazków ochronnych w wyniku porównania różnych generatorów CAPRCHA określił istotne jego zdaniem ułomności obrazków ochronnych, m.in. wyraźne obramowanie odgraniczające obrazek od tła, kontrast między tłem obrazków a kodem do odwzorowania, odmienną kolorystykę znaków i tła, wyraziste rozgraniczenie znaków i tła, nieodzowne do odróżnienia znaków zgrupowanie pikseli, co z łatwością pokonują czytniki optycznego rozpoznawania tekstu.

CAPTCHA analizowane przez Pavla Simakova
Przykłady CAPTCHA analizowanych przez Pavla Simakova

W zaproponowanym rozwiązaniu podjął udaną próbę wyeliminowania słabości za pomocą stosunkowo prostej techniki - powtórzenia odcisków znaków z niewielkim ujemnym przesunięciem i cieniem oraz zastosowaniem tego samego koloru dla tła i znaków. w rezultacie wykrycie obramowania CAPTCHA zostało utrudnione, grupowanie pikseli tworzących znaki stało się zupełnie niepotrzebne, a pierwszy plan - z tekstem - jest o wiele doskonalszy.

Znaki cyfr w Watercap
Znaki cyfr w Watercap

Małe litery w Watercap
Małe litery w Watercap

Wielkie litery w Watercap
Wielkie litery w Watercap

Kod oryginalnego skryptu liczy zaledwie 50 linii.

W konfiguracji Watercap, podobnie jak w poprzednich rozwiązaniach, możemy ustalić:

  • wykorzystanie rozszerzonego zestawu znaków,
  • ilość znaków w tekście bądź zarządzić, że będzie ustalana losowo w granicach określonych przez minimum i maksimum,
  • rozmiar czcionki lub zdecydować się na rozmiar ustalany losowo,
  • paletę kolorów, podając najmniejszą i największą wartość koloru z palety RGB (liczba z zakresu 0-255)
  • dopuszczalną ilość powtórzeń.

Calculator 1.0 Spam - STOP!

Wybór systemu Calculator 1.0 powoduje wyświetlanie obrazka z prostym zadaniem rachunkowym dodawaniem lub odejmowaniem. Użytkownik musi obliczyć poprawnie sumę lub różnicę podanych liczb, a następnie wpisać wynik w polu formularza.

W konfiguracji systemu ustalamy przede wszystkim minimalne i maksymalne wielkości pierwszej i drugiej liczby. Wielkości ustalone w konfiguracji winny spełniać dwa warunki. Przede wszystkim różnica między dowolnymi wylosowanymi liczbami nie może być mniejsza niż 0, co łatwo sprawdzić, odejmując od najmniejszej pierwszej liczby największą drugą. Należy również unikać liczb zbyt wysokich. Generowane przez system działania nie mają być przecież testem umiejętności rachowania. Definiujemy również walory generowanego obrazka: format, szerokość i wysokość, wielkość czcionki, paletę kolorów dla tekstu i tła.

Dodatkowym utrudnieniem dla robotów jest szyfrowanie sesji użytkownika. Wpisany przez użytkownika wynik szyfrowany jest tajnym kluczem, określonym w konfiguracji komponentu i zapisywany we własnej, wewnętrznej nazwie sesji, również określanej w konfiguracji.

Wadą Kalculatora, oprócz kłopotów, jakie może sprawić, generując trudniejsze zadania jest nieduży rozmiar obrazka i niewielkie możliwości zmiany rozmiaru czcionki.

CAPTCHA Calculatora
CAPTCHA Calculatora

Rozwiązywanie problemów

Brak obrazka pod tekstem

Problem może być związany z prawami dostępu do pliku imageGenerator.php. Skorzystaj np. z JoomlaXplorer, przejdź do folderu, w którym znajduje się skrypt generatora (components/com_securityimages/plugins/xxx/y.y/imageGenerator.php). Sprawdź prawa do pliku img.php lub innego, z jakiego korzystasz i zmień je na 755. Niejednokrotnie prawa ustawione są na 644, co nie wystarcza do działania CAPTCHA. Nie ma znaczenia, że folder ma prawa ustawione na 755. Takie ustawienie musi mieć plik. Zmień je z 644 na 755 i powinno zadziałać...

PHP-GD jest niezainstalowana na Twoim serwerze

Security Images wymaga biblioteki GD lub GD2. Poniżej przedstawiono wymagania generatorów CAPTCHA, wykorzystywanych w Security Images. Porównaj je ze swoim środowiskiem.

  • Core 1.1: wymaga PHP z obsługą GD do połączenia z TTF
  • Hncaptcha 1.0: wymaga PHP z obsługą GD do połączenia z TTF
  • Freecap 1.4: Używa czcionek GDF i działa na każdym serwerze
  • Watercap 1.0: wymaga PHP z obsługą GD do połączenia z TTF
  • Calculator 1.0: wymaga PHP z obsługą GD do połączenia z TTF

Zmodyfikowany nagłówek

W przypadkach, gdy włączymy tryb diagnostyczny, na niektórych serwerach może pojawić się komunikat błędu: "Cannot modify header information - headers already send blablabla". Trzeba wyłączyć debugger.

Security Images we własnych projektach

Ta strona przeznaczona jest dla projektantów Joomla/Mambo, którzy chcą wykorzystać Security Images w swoim kodzie.

Stosowanie tego systemu jest bardzo proste…

Kod strony frontowej

W kodzie strony, którą widzi użytkownik tylko 3 linie są niezbędne:

1. Włączenie biblioteki komponentu:

<?php
if (file_exist($mosConfig_absolute_path.'/administrator/components/com_securityimages/client.php')) {
include
($mosConfig_absolute_path.'/administrator/components/com_securityimages/client.php'); ?>
($mosConfig_absolute_path.'/administrator/components/com_securityimages/client.php');
} ?>

2. w miejscu, w którym ma się pojawić Captcha, trzeba wstawić następującą linię:

<?php echo insertSecurityImage("security_refid"); ?>

3. Poniższy kod wstawia tekst pomocy i pole, w którym użytkownik będzie wprowadzać kod.

<?php echo getSecurityImageText("security_try"); ?>

Linia w punkcie 3 jest, w niektórych przypadkach, zależna od ilości miejsca w warstwie prezentacyjnej HTML. Możesz ją zastąpić następującymi:

<?php echo getSecurityImageTextHeader(); ?> 

Efektem będzie etykieta: "Wpisz, odczytany kod"

<?php echo getSecurityImageTextHelp(); ?> 

Efektem będzie etykieta: "Prosżę o nowy obraz&hellip"

<?php echo getSecurityImageField("security_try"); ?> 

Wstawia na stronie pole formularza, do którego użytkownik wpisuje kod z obrazka.

Kod powyżej wstawia obraz i tekst. Twoja strona zwykle przesyła informację do przetworzenia na serwerze. 2 ostatnie linie są wstawiane między znaczniki HTML <form> </form>

Przygotowanie danych na serwerze

W kodzie przygotowującym dane na serwerze tylko 2 linie są wymagane&hellip

<php
if if (file_exist($mosConfig_absolute_path.'/administrator/components/com_securityimages/server.php')) {
include ($mosConfig_absolute_path.'/administrator/components/com_securityimages/server.php');
}
$checkSecurity = checkSecurityImage($security_refid, $security_try);
?>

Jeśli użytkownik wprowadzi poprawny kod, wówczas $checkSecurity = true

Dostosowanie kodu Joomla!

Dostosowania kodu Joomla! do korzystania z Security Images wymaga kilku poprawek:

Punkt 1.

Otwórz plik components\com_registration\registration.html.php.

Zmodyfikuj funkcję registerForm($option, $useractivation) (ok. linii 54):

<tr>
<td>
<?php echo _PROMPT_EMAIL; ?>
</td>
<td>
<input type="text" name="confirmEmail"
    class="inputbox" size="40" />
</td>
</tr>
<?php
//security image by www.waltercedric.com
global $mosConfig_absolute_path;
if (file_exists ($mosConfig_absolute_path 
   . '/administrator/components/com_securityimages/patches/registration.lostPassForm.php')) {
require_once ($mosConfig_absolute_path 
   .'/administrator/components/com_securityimages/patches/registration.lostPassForm.php');
}
//end security image by www.waltercedric.com
?>
<tr>
<td colspan="2">
<input type="hidden" name="option" 
   value="<?php echo $option;?>" />
<input type="hidden" name="task" 
   value="sendNewPass" />
<input type="submit" class="button" 
   value="<?php echo _BUTTON_SEND_PASS; ?>" />
</td>
</tr>

Punkt 2.

Otwórz plik components\com_registration\registration.html.

Zmodyfikuj funkcję registerForm($option, $useractivation) (ok. linii 164):

<tr>
<td>
<?php echo _REGISTER_VPASS; ?> *
</td>
<td>
<input class="inputbox" type="password" 
   name="password2" size="40" value="" />
</td>
</tr>
<?php
//security image by www.waltercedric.com
global $mosConfig_absolute_path;
if (file_exists($mosConfig_absolute_path 
   .'/administrator/components/com_securityimages/patches/registration.html.registerForm.php')) {
require_once($mosConfig_absolute_path 
   .'/administrator/components/com_securityimages/patches/registration.html.registerForm.php');
}
//end security image by www.waltercedric.com
?>
<tr>
<td colspan="2">
</td>
</tr>

Punkt 3.

Otwórz plik \components\com_registration\registration.php.

Po linii 61 dodaj kod:

$checkusername = mosGetParam(
$_POST, 'checkusername', '' );
$checkusername = $database->getEscaped( $checkusername );
$confirmEmail = mosGetParam( $_POST, 'confirmEmail', '');
$confirmEmail = $database->getEscaped( $confirmEmail );
//securityimages by www.waltercedric.com
global $mosConfig_absolute_path;
if (file_exists($mosConfig_absolute_path 
   .'/administrator/components/com_securityimages/patches/registration.SendNewPass.php')) {
include_once ($mosConfig_absolute_path
   .'/administrator/components/com_securityimages/patches/registration.SendNewPass.php');
}
//end security images by www.waltercedric.com
$query = "SELECT id"

Punkt 4.

Otwórz plik \components\com_registration\registration.php.

Po linii 123 (nr linii - po dodaniu kodu z pkt1) dodaj kod:

function saveRegistration( $option ) {
global $database, $acl;
global $mosConfig_sitename, $mosConfig_live_site, $mosConfig_useractivation, $mosConfig_allowUserRegistration;
global $mosConfig_mailfrom, $mosConfig_fromname, $mosConfig_mailfrom, $mosConfig_fromname;
if ($mosConfig_allowUserRegistration=='0') {
mosNotAuth();
return;
}
//securityimages by www.waltercedric.com
global $mosConfig_absolute_path;
if (file_exists ($mosConfig_absolute_path
   .'/administrator/components/com_securityimages/patches/registration.SaveRegistration.php')) {
include_once($mosConfig_absolute_path
   .'/administrator/components/com_securityimages/patches/registration.SaveRegistration.php');
}
//end security images by www.waltercedric.com
$row = new mosUser( $database );
if (!$row->bind( $_POST, 'usertype' )) {
echo "<script>
alert('".$row->getError()."');
window.history.go(-1); </script>\n";
exit();
}

Punkt 5.

Otwórz plik includes\joomla.php.

Po linii 610 dodaj kod:

$passwd = md5( $passwd );
$bypost = 1;
}
$remember = mosGetParam( $_POST, 'remember', '' );
//securityimages by www.waltercedric.com
global $mosConfig_absolute_path;
if (file_exists($mosConfig_absolute_path
   .'/administrator/components/com_securityimages/patches/joomla.login.php')) {
include_once($mosConfig_absolute_path
   .'/administrator/components/com_securityimages/patches/joomla.login.php');
}
//end security images by www.waltercedric.com
if (!$username || !$passwd) {
echo "<script>
alert(\""._LOGIN_INCOMPLETE."\&quote;
window.history.go(-1); </script>\n";
exit();
} else {

Uwagi o wydaniu polskim

Polskie wydanie komponentu różni się nieco od oryginału. W pakiecie instalacyjnym zachowano wszystkie oryginalne pliki, oznaczając je przyrostkiem _org. Wprowadzone modyfikacje obejmują głównie poprawki dotyczące prezentacji komponentu na zapleczu administracyjnym. Poprawiono liczne usterki w kodzie, uzupełniono obsługę języka (tylko polski i angielski), dodano obsługę innojęzycznych plików pomocy. Ponadto poprawiono błąd w zapisie konfiguracji silnika Watercap.

W porównaniu z poprzednimi wydaniami - dopracowano i ujednolicono tłumaczenie, poprawiono szereg usterek i błędów w tłumaczeniu.

Wszelkie uwagi i sugestie dot. tłumaczenia prosimy zgłaszać na forum.joomla.pl.

Ostatnio zmieniany Śr. 28 Mar 2012
Powrót na górę

Odwiedź katalog JED

Nowe rozszerzenia

Oglądasz teraz:   ZasobyNa Twoją witrynęSpam stop! - Security Images