Beh sbattendoti parecchio (bisogna vedere se ne vale la pena) potresti inviare un token randomico generato da te ed immagazzinato in database, poi quando tramite php vai a ricevere la richiesta dal POST verifichi che il token sia lo stesso.
Dato che il token in questo caso è casuale e non generato, sarebbe impossibile inviare dati "direttamente" senza passare dalla tua pagina iniziale.
Il punto è capire da cosa vuoi difenderti, perchè qualsiasi meccanismo che non sia lato server è scavalcabile (ad esempio questo metodo è scavalcabile semplicemente leggendo dalla tua pagina il token ed utilizzandolo per inviare la richiesta tramite "qualcos'altro" però in questo caso comunque la richiesta arriverebbe "tramite" la tua pagina con il form).