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