Я разрабатываю простые веб-приложения, которые позволяют пользователю вводить информацию с помощью формы, когда я обнаружил, что могу изменить значение ввода по умолчанию этой формы с помощью Chrome -> Check Element и отправить страницу с другим hacked
значением.
Код:
<input id="radioOk_100237" name="radio_100237" type="radio" checked="" value="0">
Как обычно, я загружаю страницу, используя Google Check Check Element, я нацелил этот флажок и изменил значение на «9», прежде чем отправить его, на моей фоновой странице он читает «9» вместо предварительно заданного значения «0», из этого входного элемента.
Если каждый пользователь изменил значение и отправил, он полностью избил бы мою БД. Как это возможно, и я должен зашифровать страницу или сделать что-то до отправки? Я полностью потерял, кстати, я использую PHP.
Для обычных пользователей вы можете просто добавить атрибут readonly
в поле формы.
Для более продвинутых пользователей / хакеров, которые пытаются манипулировать вашим сервером, вам необходимо проверить каждую часть данных, которые были отправлены для обеспечения того, чтобы подделка была обнаружена и отклонена. Для этого нет никакой технологии на стороне клиента, которая защищена от несанкционированного доступа.
Вы не можете запретить пользователям изменять, добавлять или удалять элементы в DOM. Если вам нужен такой контроль, вы должны сохранить значения элементов, которые вы выводите в объекте, а затем сравнить то, что входит в сообщение формы.
Есть миллион способов сделать это, если вы хотите плохо опубликовать пример
Вы должны выполнять проверку на стороне сервера, чтобы убедиться, что значения, которые вы получаете от вашего клиентского приложения, имеют смысл. Если вы знаете, что значение «9» будет «разбивать вашу БД», не принимайте значения 9 от клиента.
Обязательная ссылка XKCD: http://xkcd.com/327/
Вы можете проверить правильность значения на стороне сервера. Фактически вы должны проверять все отправленные данные с клиентской стороны, чтобы предотвратить атаку