kasheibess
@kasheibess
веб уже не тот

Как скрыть от опытного пользователя возможность отправить скрытую изначально форму?

Суть вопроса: есть несколько форм, которые открываются последовательно при успешном заполнении предыдущей (отправка полей осуществляется AJAX).
Раньше как-то не задавался таким вопросом, но сейчас подумал, а как избежать пропуска одной или нескольких форм?
Все формы лежат в одном html документе и у всех кроме первой стоит display:none. Соответственно при успешном заполнении формы и нажатии кнопки, текущая форма скрывается и показывается следующая. Как избежать случая, когда user сам поменяет display на block?
Я понимаю, что можно посредством append() добавлять содержимое формы при заполнении предыдущей, но если user совсем умный(или чересчур любопытный), он ведь может залезть в sourses, и банальным копирование перенести мой template в html и заполнить его, благополучно пропустив n-ое количество форм, которые по идее должны быть им заполнены.
Можно конечно объявить глобальный объект и добавить в него поле, например:
var Sitename = {}
Sitename.countForm = 0;

И при условии заполнения формы просто после успешной отправки формы делать инкрементацию этого поля:
$.ajax({
.... ,
success: function() {
    Sitename.countForm++;
}
});

а перед отправкой следующей проверять, чему равно это поле. И если условие не проходит, то делать просто
document.write(' Теперь придется пере загрузиться ');

Мне кажется этот способ более гуманный, так как если например придется править форму, а она в виде строки лежит в переменной, то мало приятного в ней копаться, да и более менее опытный пользователь интернета сможет обойти эту меру.
Способ же с переменной как минимум заставит пользователя покопаться в коде. И возможно отказаться от идеи обойти систему какими-либо средствами.

Я только начинаю серьезно вникать в front-end, поэтому стараюсь решать поставленные задачи по возможности качественно. Вот потихоньку добрался и до вопроса безопасности.

Если есть какие-либо наработки у кого-нибудь по этому поводу, буду очень признателен за ваше словесное описание решения проблемы. Спасибо за внимание)

пс. Не исключено, что проблемы то никакой и нет, а просто я недальновидный и мало знаю, поэтому не пинайте сильно если эта проблема кажется вам изначально следствием моей неопытности и возможно криворукости =))
  • Вопрос задан
  • 384 просмотра
Решения вопроса 2
AlexXYZ
@AlexXYZ
O Keep Clear O
На клиенте - никак. Клиентом может быть что угодно. Надо на сервере блокировать неправильную последовательность форм.
Ответ написан
maxpoitn2point
@maxpoitn2point
Как всегда, в своем репертуаре
А можно формы по одной подгружать.
Отобразилась первая - Ответил, Загрузил вторую. и так далее
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Phizio
@Phizio
Во фронтенде нет смысла защищать, того, что форма не видима обычному юзеру - вполне достаточно.

Это примерно так же, как ставить детскую коляску в подъезд в надежде что ее не сопрут.
И пытаться поставить на подъезд домофон в надежде повысить безопасность.
У профессиональных коляско-хакеров будет "вездеходный" ключ и они откроют домофон, зайдут в подъезд.

Безопасность можно повысить только в самой коляске (пристегнув ее к трубе замком) - аналогия:
На сервере нужны проверки. Т.е. не принимать данные от второй формы, если не стоит флаг, что первая уже приходила (или не флаг, просто проверять наличие данных в базе от результата первой формы).
Ответ написан
jlekapb
@jlekapb
.do
Я не понял, а зачем скрывать формы?
Вы же их потом покажете пользователю, чтобы он заполнил.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы