Как проверить, не была ли форма "атакована"

Мне нужно сделать несколько нестандартных форм, дело в том, что мне нужно будет использовать JavaScript для их создания, вот небольшое изображение:

enter image description here

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

Но как я могу убедиться, что пользователь ничего не изменил, я думаю, это будет Ajax для обеспечения информации на сервере, потому что они не могут ничего изменить на сервере, но на сервере, как я могу отправить хороший данные, если пользователь их подделал? Возможно, я мог бы добавить в HTML что-то вроде: data-server-element: 1, data-server-price = 50. Но цена сервера данных будет здесь только для расчета цены с помощью Javascript, и у меня будет массив в моя серверная сторона, которая скажет мне: data-server-element: 1 ====> 50. Итак, если он изменит цену сервера данных, он заплатит реальную цену. Но если он изменит элемент-сервер данных, он сможет делать все, что захочет, я вижу, как решить проблему, но это решение добавляет еще несколько проблем. Я определенно ошибаюсь в процессе и в логике, поэтому я призываю вас выяснить это, потому что я не могу позволить кому-то платить меньше, чем они должны.

Спасибо за вашу помощь.

(Возможно, этот вопрос уже здесь, в StackOverflow, но я не нашел ответа, который мог бы мне помочь. Если да, прошу прощения, обычно я провожу небольшое исследование, прежде чем задать вопрос здесь)

1
0
46
2

Ответы 2

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

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

Немного сексистский! Не все хакеры - мужчины :) :)

RiggsFolly 13.09.2018 21:38

Здравствуйте, «Вы даже можете сделать свою форму таким образом, чтобы она не беспокоила отправку результатов вычислений». Я не хочу этого делать. Я хотел бы найти способ отправлять данные по одному, как это делала бы базовая форма. Но я бы хотел, чтобы они чем-то не фальсифицировали. И я не понимаю, как я могу отправить выбор пользователя, я имею в виду РЕАЛЬНЫЙ выбор, а не ложный.

Théo Benoit 13.09.2018 21:47

@RiggsFolly - Ага. В свою защиту я торопился, а в моем родном языке нет гендерно-нейтрального «они», поэтому мы обычно используем «он», и это означает любой пол.

Vilx- 13.09.2018 22:00

@ ThéoBenoit - как сказал Терри Кармен - вы не можете доверять НИЧЕМУ, что исходит из браузера. Все это можно подделать. Так что ваш сервер должен быть готов ко ВСЕМУ. Если поступающие данные не имеют смысла, покажите ошибку. Если это имеет смысл, проверьте все, что вы можете проверить, а затем используйте это.

Vilx- 13.09.2018 22:06

Нельзя доверять всему, что происходит в браузере.

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

тем не мение не использует эту цену, когда пользователь отправляет форму. Пересчитайте цену на вашем сервере, затем используйте что.

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

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