1- Valida todos los datos ingresados o modificables por el usuario: $_GET, $_POST, $_COOKIE, $_SESSION
2- Asegurate de que cada dato sea del tipo esperado y con los valores minimo y maximo de acuerdo a tu script y/o base de datos
3- Nunca intentes hacer include de un archivo directamente de una variable introducida o modificable por el usuario, siempre validala primero
4- Elimina caracteres no validos o conviertelos a sus entidades HTML
htmlentities() o
htmlspecialchars, o bien, elimina etiquetas inseguras como <script...>, <?php, <?
5- Antes de incluir un dato en una consulta de base de datos asegurate de escaparla correctamente, en MySQL la funcion es
mysql_real_escape_string()
6- Si tienes un sistema de registro de usuarios, banea por al menos 1 hora al usuario que intente ingresar 5 veces con datos incorrectos y siempre guarda las contraseñas encriptadas, ya sea con
md5() o con
sha1()
7- Si permites que otros usuarios suban archivos verifica la extension y tipo de los mismos y nunca hagas include a un archivo de esos, si son de texto es mejor leerlos con
file() o
file_get_contents() y mostrar el contenido con echo o, si se trata de imagenes, muestralas directamente con la etiqueta <img... />
Seguramente se me escapa algo, pero, en terminos generales, con estas practicas puedes minimizar los riesgos.