La respuesta de Javier que tiene el enlace de owasp es un buen comienzo.
Hay algunas cosas más que puedes hacer más:
-
Con respecto a los ataques de inyección SQL, puede escribir una función que elimine las declaraciones SQL comunes de la entrada como "DROP" o "DELETE * WHERE", así:
*$sqlarray =array( " DROP "," o 1=1","union select","SELECT * FROM","select host","create table","FROM users","users WHERE");*
Luego escriba la función que comparará su entrada con esta matriz. Asegúrese de que ninguna de las cosas dentro de $sqlarray sea una entrada común de sus usuarios. (No olvides usar strtolower en esto, gracias lou).
-
No estoy seguro de si Memcache funciona con PHP 4, pero puede implementar alguna protección contra correo no deseado con Memcache al permitir solo un determinado acceso IP remoto a la página process.php X cantidad de veces en Y período de tiempo.
-
Los privilegios son importantes. Si solo necesita privilegios de inserción (por ejemplo, procesamiento de pedidos), debe iniciar sesión en la base de datos en la página de proceso de pedidos con un usuario que solo tenga privilegios de inserción y quizás de selección. Esto significa que incluso si una inyección de SQL se realizó, solo podrían realizar consultas INSERTAR / SELECCIONAR y no eliminar o reestructurar.
-
Coloque los archivos de procesamiento de php importantes en un directorio como /include. Luego, deshabilite el acceso de todas las IP a ese directorio / include.
-
Coloque un MD5 salado con el agente del usuario + IP remota + su sal en la sesión del usuario y verifique en cada carga de página que el MD5 correcto está en su cookie.
-
No permitir ciertos encabezados (http://www.owasp.org/index.php/Testing_for_HTTP_Methods_and_XST ) . No permitir encabezados PUT (si no necesita cargar archivos)/TRACE/CONNECT/DELETE.