2010-03-10 3 views
5

Элемент управления TextBox предлагает свойство MaxLength, которое позволяет вставляемый текст в то, что TextBox будет ограниченным клиентом до указанного количества символов.Насколько надежным является свойство MaxLength для TextBox-Control?

Мои вопросы:

  • Является ли это свойство только на стороне клиента и поэтому браузер pedendent?
  • Могу ли я рассчитывать на то, что Text свойство не содержит текста больше, чем MaxLength устанавливается (только для DisplayModes имени в статье MSDN) или мне придется вручную выполнить TextBox.Text. SubString (0, DesiredMaxLength) ?
  • Как все это ведут себя с отключенным java-script?

ответ

7

Это не зависит от javascript, но это не делает его безопасным.

Любой может по-прежнему отправлять запрос с использованием javascript (например, XmlHttpRequest) или просто обрабатывать запрос на отправку большего количества данных, чем спецификация максимальной длины. Это хороший способ остановить нормального пользователя от заполнения поля, но вам все равно нужно дважды проверить сервер.

+0

Значение TextBox-Control не поддерживает серверную безопасность для ограничения свойства MaxLength? Если я правильно вас понимаю, вы говорите мне, что с «нормальным» использованием из моего webapp я могу полагаться на то, что обычный пользователь не может обойти указанную максимальную длину? – citronas

+0

Текстовое поле не будет проверять на стороне сервера AFAIK. И я говорю, что для обычного пользователя, который не пытается ничего сделать, он будет работать, но не надежно полагаться на него. – Locksfree

+1

Я был очень обеспокоен тем, насколько легко можно обойти ограничение MaxLength, если они действительно этого хотят. Способ, которым я обходил это исправление (вместо прикрепления миллиона валидаторов), заключался в расширении класса TextBox и переопределении свойства Text. В getter, если значение MaxLength больше 0, я обрезаю значение до значения MaxLength. – rossisdead

3

Могу ли я рассчитывать на то, что свойство Text не содержит текста больше, чем MaxLength?

Нет. Учитывайте его удобство. У вас будет (как всегда) повторная проверка на сервере. И, возможно, также проверьте на JavaScript, в зависимости от того, для чего это нужно.