1- kullanıcı tarafından gelen tüm verileri filtreleyiniz. Kullanılabilecek bazı fonksiyonlar ; strip_tags, htmlspecialchars, addslashes fonksiyonları bunlardan bir kaçıdır.

2- php.ini dosyanızın iyi bir şekilde yapılandırılmış olması gerekir. Özellikle dikkat edilmesi gereken ve aşağıdaki şekilde ayarlanması gereken özellikler ;

allow_url_include = off
disable_functions = system, dl, shell_exec, shell, proc_close, proc_get_status, chown, chgrp, escapeshellarg, fileread, passthru, proc_open, proc_get_status, posix_getpwuid, array_compare, array_user_key_compare, ini_restore, proc_nice, fin, pconnect, exec
display_errors = off
enable_dl = off
safe_mode = on
register_globals = off

Mümkün olduğunca sunucunuzda phpnin son sürümlerinden bir versiyon çalışsın.

Veri tiplerini iyi analiz edin. Bir değişkenin sayısal değer ile gelmesini bekliyorsanız, o değer sadece sayısal değer ile gelebilsin.

Ayrıca, ilk düşünüldüğünde saçma gelebilecek garip açıklarda mevcut. Örneğin formlarda direkt olarak $_SERVER['PHP_SELF'] kullanmayın. Bununla ilgili sitemde bir makale yazmıştım.
http://www.sametozden.com/Formlarda_...-sayfalar.html

SESSION çalınmalarına karşı dikkatli olunuz. Sadece kullanıcının session u var diye o sessiona sahip kişi, düşündüğünüz kişi olmayabilir. session u kontrol ederken ıp adresi ve tarayıcınında doğruluğunu kontrol ediniz.

Şimdilik bu kadar