HTML - Как запретить пользователю редактировать значение формы? - PullRequest
11 голосов
/ 29 мая 2011

Я занимаюсь разработкой простых веб-приложений, позволяющих пользователю вводить информацию с помощью формы, когда я обнаружил, что могу изменить значение по умолчанию для ввода этой формы, используя Chrome -> Проверить элемент, и отправить страницу с другим значением hacked.

Код:

<input id="radioOk_100237" name="radio_100237" type="radio" checked="" value="0"> 

Как обычно, я загружаю страницу, а затем использую Google Chrome Check Element, я установил этот флажок и изменил значение на «9», прежде чем отправлять его, на моей фоновой странице он читает «9» вместо предустановленного значения «0» от этого элемента ввода.

Если каждый пользователь изменил значение и отправил, он полностью перебил мою БД. Как это возможно, и я должен зашифровать страницу или сделать что-то перед отправкой? Я полностью потерян, кстати, я использую PHP.

Ответы [ 4 ]

15 голосов
/ 29 мая 2011

Для обычных пользователей вы можете просто добавить атрибут readonly в поля формы.

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

3 голосов
/ 29 мая 2011

Вам необходимо выполнить проверку на стороне сервера, чтобы убедиться, что значения, которые вы получаете из своего клиентского приложения, имеют смысл.Если вы знаете, что значение «9» «побьет вашу БД», не принимайте от клиента значения 9.

Обязательная ссылка XKCD: http://xkcd.com/327/

2 голосов
/ 29 мая 2011

Вы можете проверить правильность вида значения на стороне сервера.Фактически вы должны проверять все данные, отправляемые со стороны клиента, чтобы предотвратить атаку

2 голосов
/ 29 мая 2011

Вы не можете запретить пользователям изменять, добавлять или удалять элементы в DOM.Если вы хотите такой контроль, вы должны сохранить значения элементов, которые вы выводите в объекте, а затем сравнить то, что приходит с постом формы.

Есть миллион способов сделать это, если вы хотитеплохо постить пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...