В ASP.NET, как предотвратить вмешательство в скрытое значение поля - PullRequest
4 голосов
/ 19 июня 2011

У меня есть пользовательский элемент управления с несколькими выпадающими списками. Я пополняю выпадающие списки, используя ajax, когда один из них изменяется в зависимости от нового выбранного значения.

Значение одного из этих раскрывающихся списков является окончательным значением пользовательского элемента управления, с которым я хочу связать поле данных.

Проблема в том, что ASP.NET не распознает значения раскрывающихся списков, потому что они были сгенерированы на стороне клиента. Поэтому я использовал скрытое поле и всякий раз, когда в раскрывающемся списке выбрано значение, я помещаю это значение в скрытое поле и возвращаю значение скрытого поля в качестве значения пользовательского элемента управления, и все работает отлично, кроме

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

Ответы [ 3 ]

9 голосов
/ 19 июня 2011

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

Я думаю, что ответить на ваш вопрос более кратко: вы не можете предотвратить вмешательство в клиент, все, что вы можете сделать, это проверить - на стороне сервера

2 голосов
/ 19 июня 2011

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

1 голос
/ 19 июня 2011

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

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

...