Поделиться через


Защита стандартных элементов управления

Обновлен: Ноябрь 2007

Стандартные элементы управления ASP.NET представляет собой группу элементов управления, которые позволяют создавать формы, в которых пользователи могут ввести или выбрать сведения, прежде чем страница будет отправлена обратно на сервер. Стандартные элементы управления представляют собой веб-серверные элементы управления, которые наследуют от класса Control. К веб-серверным элементам управления относятся элементы управления TextBox, Image и AdRotator. В этом разделе описаны рекомендации по настройке и кодированию, с помощью которых можно улучшить защиту стандартных элементов управления.

Приведенные здесь рекомендации в отношении конфигурации и кодировки помогут повысить безопасность приложений. Однако не менее важно постоянно устанавливать на сервере приложения последние обновления средств защиты для Microsoft Windows и служб Internet Information Services (IIS), а также все обновления безопасности для Microsoft SQL Server или других источников данных.

Более подробные сведения и рекомендуемые методы написания безопасного кода и защиты приложений приведены в книге "Защищенный код" Майкла Ховарда и Дэвида Леблана, а также в руководстве на веб-узле Microsoft Patterns and Practices.

Сведения о специализированных методиках защиты для других типов элементов управления приведены также в следующих разделах:

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

Элемент управления AdRotator отображает рекламные объявления, определенные в файле рекламных объявлений, который по умолчанию является XML-файлом. Кроме того, можно хранить рекламные объявления в базе данных и извлекать их программными средствами. Чтобы повысить защиту элемента управления AdRotator, следуйте приведенным ниже рекомендациям.

  • При использовании XML-файла для хранения сведений о рекламных объявлениях следует поместить файл в папке веб-узла App_Data, поскольку содержимое папки не будет обрабатываться в ответ на веб-запросы.

  • Чтобы обеспечить оптимальную степень защиты, не следует использовать расширение XML для файлов рекламных объявлений. Вместо этого лучше использовать расширение ADS, а затем сопоставить расширение ADS с ASP.NET в службах IIS и с запрещенным обработчиком в ASP.NET с помощью следующего элемента в файле веб-узла Web.config:

    <httpHandlers>
      <add verb="*" path="*.ads" type="System.Web.HttpForbiddenHandler" />
    </httpHandlers>
    

    Сведения о том, как сопоставлять в службах IIS расширение имени файла с ASP.NET, см. в разделе Практическое руководство. Регистрация обработчиков HTTP-данных.

  • Установите соответствующие права (как правило, с атрибутом "только для чтения") для учетной записи пользователя или учетных записей, которые будут читать файл рекламного объявления. Если веб-узел поддерживает анонимный доступ, это, как правило, локальная учетная запись ASPNET или учетная запись NETWORK SERVICE.

  • Если файл рекламного объявления не существует, элемент управления AdRotator создает ошибку, которая отображает путь и имя файла, который раскрывает потенциально конфиденциальные сведения. Возникновения данной проблемы можно избежать, используя соответствующие приемы обработки ошибок, включая настройку элемента customErrors в файле конфигурации для переадресации пользовательской страницы с ошибкой и создания глобального обработчика ошибок, который вызывается в случае возникновения необработанного исключения в любой точке приложения. Подробные сведения см. в разделе Практическое руководство. Отображение безопасных сообщений об ошибках.

  • При чтении сведений о рекламном объявлении из базы данных необходимо следовать рекомендациям по безопасности доступа к базе данных. Подробные сведения см. в разделе Безопасность доступа к данным.

  • Следует внимательно изучить все сведения о рекламном объявлении, полученные из ненадежного источника прежде, чем использовать его с элементом управления AdRotator. Ввиду того, что элемент управления AdRotator не выполняет проверки сведений, которые он считывает из рекламного файла, то он визуализирует изображения и URL-адреса на веб-странице точно так, как они отображаются в файле рекламного объявления или в базе данных.

BulletedList, CheckBoxList, RadioButtonList, DropDownList, ListBox

Элементы управления BulletedList, CheckBoxList, DropDownList, ListBox и RadioButtonList визуализируют различные типы HTML-элементов (ul, input и select) на основе содержимого коллекций или данных в базе данных. Чтобы повысить степень защиты данных элементов управления, необходимо выполнять следующие рекомендации:

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

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

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

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

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

  • Не следует доверять файлам, которые загружены пользователями; возможно, злоумышленники пытались загрузить исполняемые файлы. При сохранении загруженных файлов следует проверить расширение файла или присвоить файлу собственное расширение.

  • Нельзя разрешать пользователям задавать произвольный путь для сохранения загруженного файла. Следует проверить, чтобы имя файла не содержало сведений о пути, которые не были добавлены вами.

  • Нельзя раскрывать внутреннюю структуру веб-узла пользователям, которые загружают на него файлы.

  • Установите соответствующие права на чтение и запись для учетной записи пользователя или учетных записей, которые будут запускать приложение из папки или папок, где сохраняются загруженные файлы. Если веб-узел поддерживает анонимный доступ, то, как правило, это будет локальная учетная запись ASPNET или учетная запись NETWORK SERVICE. Тем не менее необходимо ограничить права на чтение и запись только папкой или папками, где приложение хранит загруженные файлы.

  • Одним из способов защиты от "атак на отказ в обслуживании" является настройка атрибута maxRequestLength для элемента httpRuntime в файле конфигурации. По умолчанию максимальный размер запроса равен 4 мегабайтам (МБ). Остальными параметрами конфигурации, которые могут влиять на размер загружаемых файлов, являются атрибут requestLengthDiskThreshold элемента httpRuntime и атрибут memoryLimit элемента processModel.

  • Следует задать размер загружаемого файла путем запроса свойства ContentLength объекта HttpPostedFile, возвращаемого элементом управления, и по данному размеру определять возможность принятия файла.

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

Элемент управления HiddenField обеспечивает способ настройки содержимого HTML-элементов <input type="hidden"> в серверном коде. Скрытые поля используются для хранения на странице данных, которые используются в процессе обработки страницы, но которые не должны быть видимыми для пользователей. Чтобы повысить защиту элемента управления HiddenField, следуйте приведенным ниже рекомендациям.

  • Не рекомендуется хранить конфиденциальные сведения в элементах управления HiddenField. Хотя сведения невидимы в обозревателе, они являются частью страницы, и пользователи могут просматривать их в режиме просмотра исходного кода страницы.

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

Гиперссылка

Элемент управления HyperLink визуализирует в обозревателе URL-адрес. Следует убедиться, что URL-адрес указывает на надежное расположение.

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

Для отображения графических изображений элементы управления Image и ImageMap визуализируют графические изображения в обозревателе. Следует убедиться, что URL-адрес указывает на надежное расположение.

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

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

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

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

Элементы управления Label и Literal отображают на странице текст путем его передачи обозревателю как есть. (Кроме того, элемент управления Label позволяет выполнять форматирование.) Если в тексте содержится разметка HTML, обозреватель будет по умолчанию соответственно обрабатывать разметку и визуализировать текст, что может подразумевать запуск сценариев.

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

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

Дополнительные сведения см. в разделе Практическое руководство. Защита от использования сценариев в веб-приложениях с помощью применения кодирования HTML к строкам.

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

Элемент управления LinkButton визуализирует ссылку (элемент a), которая использует клиентский сценарий для выполнения обратной передачи. Если в обозревателе в целях безопасности отключена поддержка клиентских сценариев, данный элемент управления работать не будет.

MultiView

С помощью элемента управления MultiView можно добавлять несколько элементов управления View и отображать их условно. Это позволяет создавать страницы, которые отображаются в виде многостраничных форм.

При переключении представлений, основываясь на данных, к которым легко получить доступ, например строка запроса URL-адреса, некоторые пользователи могут получить разрешение на просмотр представления, которое они не должны видеть. Таким образом, следует убедиться, что механизмы переключения представлений максимально надежны и безопасны. Дополнительные сведения см. в разделе Общие сведения об управлении состоянием ASP.NET.

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

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

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

  • Необходимо проверить, чтобы свойству IsValid было присвоено значение true, прежде чем запустить серверный код.

  • Следует использовать максимально полную проверку сервера. Особенно это касается элементов управления CustomValidator; нельзя создавать логику для выполнения проверки только на стороне клиента.

  • Для ограничения количества текста, вводимого пользователями, рекомендуется использовать свойство MaxLength элемента управления TextBox. Злоумышленники могут повлиять на работоспособность приложения, а также вызвать возникновение ошибок в базе данных, вводя и отправляя большие объемы данных в текстовое поле.

  • Необходимо кодировать пользовательский ввод с помощью метода HtmlEncode, который включает HTML в текстовое представление (например <b> становится &ltb&gt;), что помогает предотвратить выполнение HTML в обозревателе. Дополнительные сведения см. в разделе Практическое руководство. Защита от использования сценариев в веб-приложениях с помощью применения кодирования HTML к строкам.

  • Можно запретить просмотр содержимого текстового поля (вместо текста отображаются точки), задав для свойства TextMode значение Password. Обратите внимание, что присвоение свойству TextMode значения Password не предоставляет другой защиты; содержимое текстового поля не шифруется или скрывается иным образом, а сведения отправляются на сервер в виде простого текста. Таким образом, при использовании Password необходимо воспользоваться дополнительными методами защиты данных.

  • В случае если выполняется сбор конфиденциальных сведений, например паролей или номеров кредитных карт, для защиты сообщений между сервером и клиентом следует использовать протокол SSL. Это касается любого использования элементов управления TextBox, включая элементы управления, которые объединяют такие элементы управления TextBox, как CreateUserWizard.

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

С помощью элемента управления Wizard можно создавать многоэтапные формы ввода. При использовании элемента управления Wizard необходимо учитывать следующие требования безопасности инструкции:

  • Элемент управления Wizard не предоставляет защиты конфиденциальных сведений по определению. В случае выполнения сбора конфиденциальных данных следует использовать протокол SSL для защиты сообщений между страницами сервера и клиента, содержащими элемент управления Wizard.

  • В целях обеспечения работоспособности элемент управления Wizard содержит некоторые невидимые элементы управления. Пользователь потенциально может управлять данными элементами управления и их значениями, чтобы отображать этапы работы мастера в произвольном порядке, либо отображать те этапы, которые должны быть видимыми не для всех пользователей. Чтобы предотвратить подобное, следует убедиться, что этапы работы мастера отображаются в правильном порядке, и что этапы, которые содержат конфиденциальные сведения, отображаются только при соблюдении заданных условий.

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

Элемент управления Xml используется для отображения содержимого файла или строки XML, содержащей XML на странице; по желанию применяется XML-преобразование. Чтобы повысить защиту элемента управления Xml, следуйте приведенным ниже рекомендациям.

  • При отображении содержимого XML-файла следует по возможности поместить XML-файл в папку веб-узла App_Data, поскольку содержимое данной папки не обрабатывается при ответах на веб-запросы.

  • Следует отображать XML только из надежных источников.

  • Следует использовать преобразования только из надежных источников.

См. также

Основные понятия

Защита элементов управления входа

Защита страниц веб-частей

Безопасность доступа к данным