Archiwum dla kategorii PHP

WampServer 2 to następca WAMP5 - zestawu: Apache, MySQL, PHP przygotowanego dla systemu Windows. Na pierwszy rzut oka nowa wersja nie różni się znacząco od poprzedniej. Mamy do dyspozycji to samo wygodne menu konfiguracyjne w systemowym trayu, stronę główną (choć ta została zmodyfikowana), phpMyAdmin i SQLiteManager.
Najważniejszą nowością jest umożliwienie szybkiej zmiany wersji Apache, MySQL i PHP, które można zainstalować niezależnie z paczek przygotowanych przez autorów WampServer. I tak: jednym kliknięciem myszy można zmienić np. Apache 1.3 na 2.2, MySQL 5.0.45 na 4.1.20 lub PHP 5.2.5 na 4.1.2. Nie muszę chyba szczególnie wyjaśniać dlaczego jest to takie przydatne.

Na wstępie zaznaczę, iż jestem przeciwnikiem phpBB (lista zarzutów jest na tyle długa, a ja na tyle leniwy, że nie przytoczę ich tutaj), a tym bardziej modyfikacji by Przemo. Ale cóż…

Niedawno na jednym forum zauważyłem sporo kont utworzonych przez body (linki stron WWW kierowały głównie do pornografii). Forum stworzone na bazie Przemo phpBB i zabezpieczone mechanizmem CAPTCHA. Zabezpieczenie okazało się zbyt słabe.

Jest kilka możliwości wzmocnienia mechanizmu autentyfikacji. Można na przykład poprocić użytkownika przy rejestracji aby wpisał w dane pole konkretne słowo, a następnie sprawdzić jego poprawność. Jeszcze lepiej wykorzystać zamiast stałego słowa prostej operacji matematycznej czy podobnych rozwiązań.

W blogu http://psavel.jogger.pl/2007/01/22/phpbb-vs-spamboty/ pojaw iła się metoda opierająca się na lekkiej modyfikacji CAPTCHA. W skrócie polega to na tym, aby użytkownik przed (lub po) literami captcha wpisał inny, odgórnie ustalony i podany w instrukcji znak. Autor podał dokładną instrukcję krok po kroku jakie zmiany należy wprowadzić do skryptów phpbb.

Okazuje się jednak, iż modyfikacja przemo używa innego mechanizmu captcha. Oto lista zmian, które należy dokonać:

1. Szukamy w pliku includes/usercp_register.php:

if ( ( strtolower($HTTP_POST_VARS[‘reg_key’]) != $anti_robot_row[‘reg_key’] ) || !$anti_robot_row[‘reg_key’] )

i zmieniamy na na przykład (dodajemy ‘X’):

if ( ( strtolower($HTTP_POST_VARS[‘reg_key’]) != ‘x’.$anti_robot_row[‘reg_key’] ) || !$anti_robot_row[‘reg_key’] )

2. W pliku templates//profile_add_body.tpl szukamy:

<span class="gen">{validation.VALIDATION}
<input name="reg_key" class="post" onfocus="Active(this)" onblur="NotActive(this)" maxlength="4" size="24" type="text" /></span>

i rozszerzamy pole tekstowe co najmniej o jeden znak (w tym wypadku o 4 znaki do wartości 8):

<span class="gen">{validation.VALIDATION}
<input name="reg_key" class="post" onfocus="Active(this)" onblur="NotActive(this)" maxlength="8" size="24" type="text" /></span>

3. Modyfikujemy opis, dodając instrukcję dotyczącą konieczności umieszczenia na początku dodatkowego znaku:

$lang[‘Validation_explain’] = ‘Żeby mieć pewność że nie jesteś robotem, wpisz wyświetlone cyfry.’;

na:

$lang[‘Validation_explain’] = ‘Żeby mieć pewność że nie jesteś robotem, wpisz wyświetlone cyfry. <strong>Ważne! Do kodu dołącz na samym początku literę "X"!</strong>’;

To chyba tyle. Jak na razie działa.