Przykładowo.
Ktoś kupuje produkt w koszyku klika na zapłać. Przekieruje go na podstrone zapłaty. Tam wybiera sposób zapłaty i jeśli nie jest zarejstrowany to musi podać dane. Wtedy te dane chce przefiltrować dodać kilka parametrów i wysłania je dalej... czyli na dany sposób płatności. Wtedy tam wyświetlić dokładnie co i jak i po tym zapisać do bazy odpowiednie dane i w przypadku platnosci payu przekierować na payu.
Ale w sumie mogę odrazu dac na dany sposób płatności i tam przefiltrować dane. Mniej zabawy.
Jednak przekazuje getem ale tylko kilka rzeczy:
- sig ( klucz md5 z zakodowanych danych (imie, nazwisko, sposob zaplaty i kod losowy))
- kod_sig ( losowy kod nie zakodowany, który jest wykorzystywany w powyższym kodzie sig )
- przekazuje jedną zmienną dodatkową ( zeby wiedziec czy to od nie zalogowanego czy zalogowanego ( chociaż słuzy do tego sesja inna. ale nie każdy uzytkownik ma wprowadzone dane w ustawieniach dlatego przekazałem zmienna żeby wiedziec czy odebrac dane czy wybrac z bazy )
- dane imie, nazwisko itp.. przekazuje w sesji i koduje to base64_encode
dla formularza losuje, losowy kod do sprawdzenia czy formularz zostal wysłany ze strony, przekazuje kod losowy w type="hidden" zakodowane w sha1 wtedy sprawdzam czy sie zgadza itd...
if ((@$_POST["send_form"]) && (@$_POST['send_form'] == sha1(@$_SESSION['uniq_kod']))){
// formularz wysłany
}
?>
<form..... >
<input type="hidden" name="send_form" value="
<?php echo sha1
(@$_SESSION['uniq_kod']); ?>">
wygląda to niejwięcej tak:
$sig = md5($sposob_platnosci.$imie.$nazwisko.$telefon.$sig_kod); header('Location: platnosc.php?a='.$sposob_platnosci.'&s='.$platnosc.'&sig_k='.$sig_kod.'&zl=n&sig='.$sig);
wtedy w docelowym pliku robie sprawdzanie poprawnosci tzn.:
- sprawdzam czy zalogowany czy nie.
- sprawdzam czy dane w gecie są wysłane.
- sprawdzam czy sesje z danymi istnieja
- koduje sig według powyzszego przykladu i sprawdzam czy sie zgadza z tym wyslanym w gecie
I wszystko działa dobrze. jeden błąd i jest przerwane.
Z góry mówie że to narazie przykłady testy itp.
Wydaje się to trochę skomplikowane bardzo. Ale czy jest bezpieczne?
I co sądzicie o tym całym moim mechanizmie ktory konstrułuje?
Jestem zdanie że lepiej coś samemu zbudować niż kopiować. Dlatego krytyka mile widziana. Nie wszystko wie się odrazu. Trzeba trochę praktyki odbyć.
Pozdrawiam.