Walidacja po stronie klienta czy serwera - php vs javascript

Mam pytanie jakiej walidacji lepiej używać ,po stronie klienta czy serwera ,która opcja jest lepsza .Jak dobrze pamiętam i zauważyłem walidacje po stronie klienta można bardzo łatwo ominąć (sql injection). Proszę o konkrety która opcja jest lepsza i dlaczego ,czy to wyłącznie zależy od programisty ?

Walidacja po stronie serwera, nie obejdziesz tego…chyba że się włamiesz na serwer.

Można się posiłkować walidacją po stronie klienta, jest to wygodniejsze dla klienta gdyż nie musi strony wysyłać na serwer w celu walidacji.

Tzn. zastosowanie obu metod jednocześnie to ideał, ale ja stosuje tylko serwera.

Ja używam walidacji po stronie klienta i serwera.

Jest jedna zasada nie ufaj danym przesyłanym przez użytkownika stosuj funkcje filtrujące:

mysql_rel_escape_string dla danych typu np string:

mysql_query("INSERT into dane VALUES(NULL,'". mysqli_real_escape_string($_GET['dane']) ."')";

a dla inta konwersje jawną lub nie jawną czyli np

mysql_query("INSERT into dane VALUES(NULL,'". (int) $_GET['dane'] ."')";


$_GET['dane'] = settype($_GET['dane'] ,"integer");


mysql_query("INSERT into dane VALUES(NULL,'". (int) $_GET['dane'] ."')";

Oczywiście zależy to także od danych warto użyć strip_tags albo htmlspecialchars() by zapobiec XSS

Co do walidacji po stronie klienta ( client side )

http://www.dmxzone.com/ShowDetail.asp?NewsId=5575