Я отображаю мало данных в скрытом вводе. Пользователь может проверить html-страницу и увидеть эти скрытые входные данные. Он также может изменить скрытые входные данные, которые представляют угрозу безопасности моего сайта. Например, у меня есть скрытый ввод, в котором адрес электронной почты пользователя и имя отображаются следующим образом
<input type="hidden" name="name" class="form-control" placeholder="Your Name" value="Jhone" required="">
Пользователь может проверить html и изменить значение, после чего мои формы отправляются с новым обновленным значением. есть ли способ остановить отправку форм, если значение изменилось. вот мой код:
#html шаблон
{% for i in currentuser_details %}
{%for y in user_profile%}
<input type="hidden" name='userprofile' value="{{y.id}}">
{%endfor%}
<input type="hidden" name="name" class="form-control" placeholder="Your Name" value="{{i.first_name}}" required>
<input type="hidden" name="email" class="form-control" placeholder="Enter email"value="{{ i.email }}" required>
{%endfor%}
#html скрытые входные данные рендеринга
<input type="hidden" name="name" class="form-control" placeholder="Your Name" value="Jhone" required="">
<input type="hidden" name="email" class="form-control" placeholder="Your Name" value="Jhone@gmail.com" required="">
<input type="hidden" name='userprofile' value="1">
<input type="hidden" name="parent" id="parent_id" value="95">
Больше всего импортируемых полей для меня профиль пользователя и родитель. Я хочу предотвратить отправку форм при изменении любого скрытого значения.
froms.py
class CommentFrom(forms.ModelForm):
captcha = CaptchaField()
class Meta:
model = BlogComment
fields = ['name','email','comment','parent','sno','blog','user','userprofile']
views.py
if request.method == "POST":
if comment_form.is_valid():
isinstance = comment_form.save(commit=False)
if request.user.is_authenticated:
isinstance.user = request.user
elif not request.user.is_authenticated:
User = get_user_model()
isinstance.user = User.objects.get(username='anonymous_user')
isinstance.blog = blog
isinstance.save()
messages.add_message(request, messages.INFO, 'Your Comment Pending for admin approval')
return redirect('blog:blog-detail',slug=blog.slug)
else:
messages.add_message(request, messages.INFO, "your comment didn't submitted. please submit again ")
else:
comment_form = CommentFrom()
набор запросов для user_profile и currentuser_details, которые используются в представлениях и передают контекст на мою html-страницу.
user_profile = UserProfile.objects.filter(user=request.user)
currentuser_details = UserManagement.objects.filter(username=request.user) user_profile = UserProfile.objects.filter(user=request.user)
Думаю, мне нужно добавить проверку в файл froms.py или views.py, но как это сделать для скрытых полей ввода и скрытых полей внешнего ключа, я не знаю.
Я не знаю, можете ли вы напрямую запретить пользователю отправлять форму, если значение изменилось с помощью проверки, особенно на стороне клиента. Вы, вероятно, можете сделать это на стороне сервера, но я думаю, вы можете попробовать отключить проверку (хотя это не рекомендуется и не полностью работает)
Джон Доу спасибо за ваш комментарий. Мне нужно добавить проверку в мой froms.py или views.py, но как я не знаю. Жду соответствующего ответа и надеюсь, что кто-нибудь может помочь мне по этой теме.