Кодировать / Декодировать TextBox - PullRequest
4 голосов
/ 06 июня 2011

Я использую Asp.Net 4, C # и MS SQL.

Для своего веб-сайта я использую стандартное решение MS для предотвращения межсайтовых сценариев.

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

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

  • CREATE: пользователь может вставлять любые входные данные, моя логика будет ENCODE и сохранять в базе данных.
  • READ: GridView может отображать пользовательский ввод из базы данных в виде «метки», в результатеDECODED благодаря «Свойствам для поля» HtmlEnscape True или False.
  • ОБНОВЛЕНИЕ: здесь моя проблема! Во время редактирования TextBox отображаются входные данные пользователя из кодированной базы данных (таким образом был сохранен), но япотребуется снова ДЕКОДИРОВАН, чтобы показать его пользователю, поэтому его можно редактировать дружественным способом и сохранить заново.

Мои вопросы: - Как это сделать? - Потому что у меня много TextBox на многих страницахв моем приложении, какцентрализовать это поведение?

Спасибо, ребята, за вашу помощь!

1 Ответ

3 голосов
/ 06 июня 2011

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

Это имеет несколько преимуществ;

  1. Вы независимы от формата -Вы можете взять свои данные и поместить их в виде HTML, XML, JSON или чего-либо еще, потому что вы не привязали себя к одному формату при хранении.
  2. Это облегчает поиск, если вы ищете эти поля.
  3. Если в используемой вами функции кодирования есть ошибка, вы можете в итоге сохранить небезопасные значения.Кодируя в точке вывода, вы можете заменить свой кодировщик на кодер без ошибок или кодировщик, использующий черный список, а не белый список, без необходимости просматривать все ваши данные, извлекать их, декодировать и перекодировать.

В случае текстового поля фактическая кодировка зависит от типа текстового поля - однострочное текстовое поле кодируется атрибутом, многострочное текстовое поле кодируется HTML, и используется свойство text asp.net.Элемент управления textbox кодирует для вас, используя правильный метод.

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

...