Хотя Подделка межсайтовых запросов обычно классифицируется как атака на уже аутентифицированные учетные записи пользователей через другой сайт, методы, используемые для борьбы с ним, в некоторой степени будут работать для вас, даже если вы скажем, ваши пользователи не аутентифицированы как таковые.
В частности, создание одноразового номера (одноразового уникального значения) для каждой формы, как описано в Статья Джеффа Этвуда здесь , поможет другим сайтам просто размещать данные на ваших серверах - если вы проверяете что одноразовое значение, отправленное с запросом POST, является тем, которое вы недавно сгенерировали, оно, по крайней мере, должно быть получено от кого-то, кто каким-то образом "посетил" ваш сайт.
Однако это не помешает спамерам атаковать ваш сайт, удалив одноразовые значения с вашего сайта, то есть притвориться вашими пользователями и использовать ваши настоящие формы. Для этого вы, вероятно, захотите изучить различные методы, такие как CAPTCHA s, черные списки и другие проверки.
Лично я думаю, что если вы не собираетесь использовать аутентифицированных пользователей (под которыми я подразумеваю, по крайней мере, требование CAPTCHA плюс подтверждение адреса электронной почты для регистрации пользователя, а затем требование аутентификации перед загрузкой), тогда я бы скажем, у вас будет , чтобы использовать хорошую систему CAPTCHA, возможно, в сочетании с регулярной проверкой необычной активности и выборкой загрузок для борьбы с неизбежным спамом и атаками. К сожалению, большинство популярных веб-сервисов требуют этих проверок.
(Между прочим, сеансы работают нормально с Ajax - просто убедитесь, что вы используете тот же код обработки сеансов на странице, которая отвечает на запрос Ajax. Но без аутентифицированного пользователя сеансы ничего не купят в насколько я вижу, это безопасный способ. Спамбот отлично справляется с сессиями.)