Wracajac do meritum - najogolniej boty chodza po stronach w poszukiwaniu <form>, wypelniaja wszelkie pola formularza i wciskaja submit.
Zabezpieczyc mozna sie na kilka sposobow, jednym z nich jest wspomniany token. Mozna tez sprawdzac, czy mamy do czynienia z botem, proponujac przy uzupelnianiu formularza wpisanie wyniku jakiegos dzialania matematycznego etc.
Mozna tez dac
<input type="text" name="costam" value="" style="display: none;" />
I sprawdzac pozniej w skrypcie, czy pole formularza costam jest wypelnione. Jesli bedzie, dajemy np. exit(); i konczymy prace skryptu, bo tylko bot "widzi" pole costam jako normalne i wpisuje tam swoje dane.