Реклама:

'); alertC і am in control')//

будет получен следующий результат:

alcrtCNo results lound for ");alert('i am in control')//');

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

Корпорация Microsoft выпустила бесплатную библиотеку AntiXss Library, при использовании которой кодирование становится более надежным и поддерживает больше контекстов выходных данных, чем HTML. Библиотеку AntiXss можно загрузить і ю адресу /м'(р.//ш№да\т»сгохо^^ 7а49-496с-9а89-а/ОМе2е59Я2&ЛхрІауІап(і=еп.

Во время выпуска данной книги уже должна быть реализована версия 1.5 библиотеки АпІІХ«5, которая поддерживает методы, указанные в табл. 3-2.

Табл. 3-2. Методы кодирования библиотеки AntiXss.1.5

Метод

Описание

HtmlEncode

Более надежная версия встроенного метода Hiiiil-

 

Eiicode для выходных данных HTML

Html Attribute Encode

Кодирование динамически создаваемых атрибутов

 

HTML

XmiEncode/XmlAttributeEncode

Кодирование элементов и атрибутов XML

UrlEncode

Кодирование динамически конструируемых UR1.

JavaScriptEncode/VisualBasicEncode

Кодирование динамически генерируемых сценариев

 

JavaScript или Microsoft Visual Basic Scripting Edition

 

(VBScript)

Кодирование предыдущего вложения сценария метолом ]аиа$спр1Епсойе из библиотеки АгШХзз ласт следующий результат :

а1егт('Мо геки! 1 в 1'оипа Гог ' +

Лх27\х29\хЗЬя1йп\х28\х27| ат 1п сопг ггЛ\x27\x29\x2f\х?1" );

Все алгоритмы кодирования библиотеки АпЫХяя используют технологию белых списков 1) противоположность метолу ИирШИку.ПшШпсойе, который использует черные списки. Библиотеку АпиХкк целесообразно применять для любого кодирования.

Элементы управления ASP.NET с поддержкой кодирования

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

Характеристики некоторых наиболее распространенных элементов управления представлены в табл..3-3.

Табл. 3-3. Элементы управления ASP.NET и их поведение

Элемент управления

Literal

Характеристика

По умолчанию отсутствует. Данные HTML кодируются, если свойству Mode присвоено значение LiteralModeEncode

Label

Отсутствует

Text Box

Текстовый блок с одной строкой (input type= "text") не кодируется, а с множеством строк колируется и HTML

Burton

Колируемым атрибутом является текст

LinkButton

Отсутствует

 

см. след. стр.

Выражаю благодарность

Николь Калшюйу за исследования в этой области. Полное описание

характеристик некоторых элементов управления вы можете найти но адресу http://msmvps.coni blo^/calmoiu/archii>e/200e/m/1'i/102957.aspx.

Элемент управления

Характеристика

Hyperlink

Текст не кодируется. Кодируется путь URL NavigateUrl

 

(если не используется протокол JavaScript, поскольку

 

в этом случае кодируется атрибут)

DropDownLixt и ListBox

Кодируемым атрибутам являются значения опций. Ото-

 

бражаемый текст опций кодируется в HTML

CkeckBoxw CheckBoxList

Не имеют значений. Отображаемый текст не кодируется

RadioButton и RadioButtonList

Кодируемым атрибутом является значение. Отображае-

 

мый текст не кодируется

CridViea- и DeiailsView

Текстовые поля кодируются в HTML, если их свойству

 

HtmlEncode присвоено значение true. (Это значение задает-

 

ся по умолчанию и используется также

 

в автоматически генерируемых столбцах.) Однако ото-

 

бражаемый текст для текстовых полей не кодируется, лаже

 

если свойству поля HtmlEncode присвоить значение true.

 

Поля гицерссылок соответствуют шаблону для элементов

 

управления HyperLink

Песочница


⇐ Предыдущая страница| |Следующая страница ⇒