Я так понимаю, что вам надо запретить отправку POST'ом данных из всех форм, кроме расположенной у вас на сайте.
@SpaceBike выше почти правильно вам указал, что сделайте скрытое поле, значение которого будет генерироваться PHP в зависимости от пришедших параметров пользователя (HTTP-заголовки, Cookie, User-Agent и т.д.). Туда же можно добавить некую "соль" - случайно сгенерированный параметр, но его надо будет хранить, чтобы использовать потом.
В форму:
<input
type='hidden'
name='security'
value='<?php
echo md5(
$_SERVER['REMOTE_ADDR'] .
$_SERVER['HTTP_USER_AGENT']
);
?>'
/>
В обработчике POST-запросов:
<?php
$valid = md5(
$_SERVER['REMOTE_ADDR'] .
$_SERVER['HTTP_USER_AGENT']
);
if($POST['security'] == $valid) {
// хороший
} else {
// плохой
};
?>
Таким образом, чтобы отправить POST-запрос с внешнего сайта или автоматическим скриптом, им надо будет эмулировать браузер: скачать страницу с вашего сайта, взять скрытые параметры (их может быть несколько) и отправлять свои запросы с ними. На моей практике 95% автоматических скриптов этого не делают. Понятно, что это не идеальная панацея. Можно добавить некий скрытый параметр через Javascript, тоже каким-нибудь мудрёным алгоритмом. Автоматика вряд ли будет исполнять js в момент скачивания, а если будет, то защищаться надо будет другой проверкой на робота.