Запрет анонимного пользователя многократно отправлять форму в ASP.NET без SqlMembershipProvider
У меня есть простая форма, которая выводит выбранные ответы в XML-файл. Как запретить анонимному пользователю отправлять эту форму много раз?
Я не ищу полностью пуленепробиваемое решение, и у меня есть ограничение, что я не могу использовать базу данных, и, следовательно, нет SqlMembershipProvider.
Будет ли работать проверка файлов cookie? Как это сделать правильно?
Заранее спасибо.
Обновление: если быть более точным, я имею в виду не только случайную отправку формы, но и предотвращение повторной отправки этой формы пользователем, посетившим сайт неделю назад.
2 ответа
Короче говоря, вы не можете полностью надежно. Если вы не беспокоитесь о чем-то пуленепробиваемом, как вы говорите, вы можете либо
а) Сохраните файл cookie на клиентском компьютере и проверьте его в следующий раз, когда кто-то отправит сообщение. Очевидно, что пользователь может удалить куки, поэтому не блестящие. б) Вы можете сохранить IP-адрес, с которого он был отправлен. Проблема заключается в том, что вы запретите нескольким пользователям отправлять один и тот же IP-адрес, т.е. прокси, и один и тот же пользователь может публиковать сообщения из разных мест.
Ни один из них не особенно хорош, и если это возможно, я бы рекомендовал попросить их ввести адрес электронной почты в начале, сохранить сообщение как неподтвержденное, отправить ссылку для подтверждения по электронной почте и сделать сообщение официальным только тогда, когда они нажмут на него. Опять же, не пуленепробиваемый, поскольку он не останавливает людей, отправляющих сообщения с несколькими учетными записями электронной почты, но это немного лучше, чем варианты выше.
НТН
Используйте переменные сеанса, чтобы отслеживать, что делает ваш пользователь.