• Ogłoszenie:

[php] token - podstawowe zabezpieczenie formularza.

Poradniki związane z tworzeniem i prowadzeniem stron www.

[php] token - podstawowe zabezpieczenie formularza.

Postprzez eSpEY 12 Wrz 2009, 00:16

reklama
Witam.

Wstęp
Podczas nasilających się ataków na formularze internetowe ze strony botów, spamerów czy jak inaczej je nazwiemy - musimy zabezpieczyć nasz formularz chociażby najprostszym sposobem jakim jest prosty TOKEN - który eliminuje większość ataków.

Co nam będzie potrzebne - wymagania
Dużo nam nie trzeba, aby wykonać prosty token. Nie będę wspominał o banałach, którymi jest serwer z obsługa php. Przede wszystkim musisz przygotować 10 obrazków, na których umieścisz liczby od 0..9 i zapiszesz je w folderze token (najlepiej gif - mało ważą).

Skrypt
Nasz kod najlepiej umieścić na początku pliku w którym chcemy go wykorzystać.
Jak już wspomniałem posłużymy się sesją, więc musimy ją rozpocząć poleceniem session_start, następnie wyczyścić sesję:
Należy pamiętać, że polecenie session_start musi być wywołane bezpośrednio po rozpoczęciu skryptu (<?php) !!!
Kod: Zaznacz wszystko
$_SESSION['nazwanaszejsesji'] = '';

Teraz zajmiemy się losowaniem liczb i utworzenia ciągu obrazków. Zastosujemy tu pętlę for oraz funkcję rand.
Kod: Zaznacz wszystko
  for($indx=0;$indx<6;$indx++) { //powtarza losowanie do wylosowania (domyślnie) 6 liczb
$wylosowana= rand(0,9); //losuje liczbę
$_SESSION['nazwanaszejsesji'] .= $liczba; //dopisujemy do ciągu
$token.= '<img src="/token/'.$liczba.'.gif" />'; //dopisujemy do wyświetlenia
}

Mamy już wylosowane liczby, zapisany ciąg w sesji oraz zapis HTML do wyświetlenia.
Wyświetlenie obrazka jest proste. Wystarczy wpisać:
Kod: Zaznacz wszystko
echo $token;

ALE nie możemy zapomnieć o weryfikacji kodu. W tym celu należy dodać do formularza pole tekstowe!

Sprawdzanie poprawności kodu
W tym celu do skryptu wykonywanego po wysłaniu formularza należy dopisać:
Kod: Zaznacz wszystko
session_start();

(pamiętając, że musi znajdować się na początku skryptu) oraz instrukcję warunkową:
Kod: Zaznacz wszystko
if ($_SESSION['nazwanaszejsesji']  == $_POST['nazwa_pola_tekstowego']) {
//i tu dalsze polecenia
} else {
//a tu komunikat o błędnie przepisanym kodzie
}


Dodatkowe porady
Jeżeli będzie występował błąd dot. sesji trzeba spróbować umieścić przed każdym session_start funkcję ob_start


I w ten sposób nasz formularz - czy to rejestracji czy kontaktowy - został częściowo zabezpieczony.

Poradnik napisany przez dj_disc vel espey dla programosy.pl

Pochwały przyznane za posta: 6
Awatar użytkownika
eSpEY
 
Posty: 1340
Dołączenie: 04 Lut 2007, 12:24
Miejscowość: Olsztyn
Pochwały: 111



Powróć do Tworzenie stron www

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 1 gość