Запрет анонимного пользователя многократно отправлять форму в ASP.NET без SqlMembershipProvider

У меня есть простая форма, которая выводит выбранные ответы в XML-файл. Как запретить анонимному пользователю отправлять эту форму много раз?

Я не ищу полностью пуленепробиваемое решение, и у меня есть ограничение, что я не могу использовать базу данных, и, следовательно, нет SqlMembershipProvider.

Будет ли работать проверка файлов cookie? Как это сделать правильно?

Заранее спасибо.

Обновление: если быть более точным, я имею в виду не только случайную отправку формы, но и предотвращение повторной отправки этой формы пользователем, посетившим сайт неделю назад.

2 ответа

Решение

Короче говоря, вы не можете полностью надежно. Если вы не беспокоитесь о чем-то пуленепробиваемом, как вы говорите, вы можете либо

а) Сохраните файл cookie на клиентском компьютере и проверьте его в следующий раз, когда кто-то отправит сообщение. Очевидно, что пользователь может удалить куки, поэтому не блестящие. б) Вы можете сохранить IP-адрес, с которого он был отправлен. Проблема заключается в том, что вы запретите нескольким пользователям отправлять один и тот же IP-адрес, т.е. прокси, и один и тот же пользователь может публиковать сообщения из разных мест.

Ни один из них не особенно хорош, и если это возможно, я бы рекомендовал попросить их ввести адрес электронной почты в начале, сохранить сообщение как неподтвержденное, отправить ссылку для подтверждения по электронной почте и сделать сообщение официальным только тогда, когда они нажмут на него. Опять же, не пуленепробиваемый, поскольку он не останавливает людей, отправляющих сообщения с несколькими учетными записями электронной почты, но это немного лучше, чем варианты выше.

НТН

Используйте переменные сеанса, чтобы отслеживать, что делает ваш пользователь.

Другие вопросы по тегам