Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Walidacja formularza, mysql i formularz php
doomink
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 23.09.2010

Ostrzeżenie: (0%)
-----


Witam,
piszę portal w którym uzytkownik wypełnia dane zapisywane poźniej do bazy mysql. Robiąć walidacje zmiennych spr
-długośc
-czy liczba (jeśli muszą być cyfry)
-htmspecialchars()
-addslashes()
i zastanawiam się co jeszcze powinienem uwzględnić, czytałem o sql injection itd, jakich funkcji powinienem uzyć(IMG:style_emoticons/default/questionmark.gif)
czy mysql_escape_string() i addslashes() wystarczy??
Czy możecie mi podać jakiś funkcje do walidacji np. adresu mail??
Zastanawiałem się także nad wyrażeniami regularnymi, czy jeśli zastosuję metody powyżej to wougle ma sens??
Nigdy wcześniej nie robiłem walidacji więc będę bardzo wdzięczny za uwagi jeśli coś pominołem
Z góry bardzo dziękuję za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Dobra walidacja powinna zostać przeprowadzana dwuwarstwowo, niezależnie od walidacji po stronie klienta w javascripcie (i tu np. użyć jakiejś gotowej wtyczki do jQuery) należy też sprawdzić poprawność danych po stronie serwera. W tym drugim przypadku najczęściej stosowanymi zabiegami są:
- wymuszanie spodziewanego typu danych z określonego pola formularza poprzez rzutowanie do określonego typu (intval, floatval lub old-retro $zmienna = (int) $zmienna, $zmienna = (float) $zmienna itd.)
- sprawdzanie długości (string strlen i sustr) i maksymalnej wartości (int, float, double) zmiennej z forma
- użycie ukrytych pol formularza z zastosowaniem mechanizmu generowania tokenów w celu zwiększenia prawdopodobieństwa, że dane z formularza pochodzą z naszej strony
- sprawdzanie opcji selekta (pomimo stosunkowo małego prawdopodobieństwa nadużyć dla tego typu pól) i filtrowanie wartości które przychodzą z forma do tyko tych zdefiniowanych (np. w tablicy)
- wysyłanie metodą POST zamiast GET
- użycie PDO do operacji na bazie danych
- użycie wspomnianych już filtrów do walidacji poprawności np. adresu e-mailowego
- zastosowanie sprawdzonych implementacji do walidacji numerów NIP, PESEL, KRS, kodów pocztowych itp.
- usuwanie znaków specjalnych i białych (np. trim), wycinanie ze stringów wszystkiego, spoza zdefiniowanej tablicy znaków dozwolonych
Polecam korzystanie z gotowych rozwiązań, np. walidatorów dla Zend_Form, wtyczek do walidacji formularza opartych o np, jQuery. Jest jedna naczelna zasada: nigdy nie ufaj danym pochodzącym od użytkownika, sprawdzaj wszystko, niezależnie od typu pola w samym formularzu i wymuszaj określony typ, długość i zestaw dozwolonych znaków. Dobry pomysłem jest również zastosowanie recaptcha przeciw spamerom.
Go to the top of the page
+Quote Post
doomink
post
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 23.09.2010

Ostrzeżenie: (0%)
-----


Dlaczego dwustronnie?? Jeśli pobieram dane z formularza $_POST->skrypt walidacyjny->require("skrypt docelowy"), to po co jeszcze walidacja po stronie klienta??- tz czy jest konieczna z powodu bezpiecześńtwa, czytałem gdzieś że nie, ale może to było złe źródło??

- użycie ukrytych pol formularza z zastosowaniem mechanizmu generowania tokenów w celu zwiększenia prawdopodobieństwa, że dane z formularza pochodzą z naszej strony

mógłbyś podać przykład??

- sprawdzanie opcji selekta (pomimo stosunkowo małego prawdopodobieństwa nadużyć dla tego typu pól) i filtrowanie wartości które przychodzą z forma do tyko tych zdefiniowanych (np. w tablicy)

o co chodzi??

Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 22:32