Puedes seguir los siguientes puntos:
- Sanitizar las variables POST (Forzoso)
- Verificar la procedencia de la petición POST via REFERER (ver nota final)
- Incluir un captcha en el formulario
- Usar sesiones
Con respecto al referer, puede ser un arma de dos filos, ya que no todos los navegadores lo definen, y en algunos casos puede ser modificado manualmente, pero no esta demás verificarlo.
Un comentario mas, en uno de las respuestas anteriores se habla de ataques a sesiones:
"
De esta forma, getCadena() va a devolver siempre para el mismo usuario la misma cadena (sino, no podrías acceder al campo después), pero el nombre no queda trivial, sino que sería algo del tipo A67QWBQF97ASBDFQ9WEBFAS351_id, con lo que añades seguridad ante ataques por SESSION."
De ninguna forma podrás ser victima de un ataque por sesión, ya que toda la información permanece dentro del servidor, lo único que se crea fuera del servidor es la cookie en la que se almacena la PHPSESSID, pero esta no le sirve de nada al usuario final para intentar algún ataque, al final, si alguien vulnera tu sesión es que ah tenido acceso al servidor, y llegando a este punto, de nada sirve modificar/alterar/atacar las sesiones activas ya que tendrán acceso directo al contenido que deseen sustraer/modificar/borrar