Опубликован: 16.10.2006 | Уровень: специалист | Доступ: платный
Лекция 11:

Безопасность активного содержимого

Аннотация: На данный момент уже установлен сервер IIS, обеспечена его безопасность и теперь вы намерены опубликовать веб-сайт в интрасети или в интернете. Если сайт состоит полностью из статического содержимого (т.е. содержимого, которое изменяется ручным редактированием HTML-страниц или рисунков), то его можно публиковать. Когда посетитель перейдет на веб-страницу, введя ее адрес URL в веб-браузере или щелкнув на гиперссылке, сервер просто отправит файлы, из которых состоит запрашиваемая страница. К сожалению, статическое содержимое часто бывает просроченным или выглядит бедно.
Ключевые слова: активное содержимое, базы данных, HTML, сайт, IIS, создание веб-страниц, методы передачи данных, CGI, HTTP, безопасность, шлюз, ущерб, ASP, COM, Unix, приложение, сценарий, объект, программа, база данных, информация, URL, form, сервер, интерпретатор, запрос, ISAPI, доступ, связь, интерфейс, SSI, STM-1, Windows, NTFS, файл, виртуальный каталог приложения, Состояние сеанса, переменная среды, ISM, IDC, app, application, configuration, verb, script engine, remove, запись, перемещение файлов, команда, параметры веб-частей, version control, built-up, функция контроля, BAK, footer, прием данных, браузер, поиск, тег, Хакер, поле, вредоносный код, пользователь, подстановка, нарушение целостности, cookie, кодирование, веб-форма, telephone, серверные элементы управления, latin-1, html-редактор, CERT, Microsoft Knowledge Base, prevention, issue, vulnerability, автозавершение, logoff, ASA, constructor, обмен данными, тип данных, чтение файла, интеллектуальная собственность, утилиты командной строки, тестирование сценариев, ACL, контроль доступа, EFS, runtime error, путь, имя файла, вероятность, свойства сообщений, event log, меню, программное обеспечение, Интернет, апплет, JAR, цифровая подпись, OCX, object signing, Internet, VBA, flash, компонент, администрирование, удаленное администрирование, upload, uninstall, CNF, сеть, robotically, protocol, disallow

Коммерческие сайты, особенно сайты электронной коммерции, требуют регулярного обновления информации о ценах на продукты, о специальных предложениях или нуждаются в интерактивных веб-страницах, структура которых зависит от запроса, полученного веб-сервером. Динамическое или активное содержимое позволяет изменять страницы для отображения результатов поиска или вывода информации, взятой из базы данных. На HTML-страницах можно разместить сложные объекты – фильмы и Java-апплеты. Динамическое содержимое "оживляет" сайты, делает их более интересными и успешными. Активное содержимое обеспечивает индивидуальный подход к каждому пользователю. Однако с точки зрения безопасности статический сайт более защищен, так как активное содержимое требует наличия еще одной службы IIS, что ведет к появлению новых уязвимых мест.

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

В IIS при автоматическом создании веб-страниц данные передаются другому приложению для обработки, после чего они возвращаются на веб-страницу (например, номер подтверждения заказа). Метод передачи данных в прямом и обратном направлениях между сервером и приложением называется общим шлюзовым интерфейсом (CGI), и основополагающим механизмом CGI является HTTP. К сожалению, мощь и функциональные возможности этой технологии негативно влияют на общую безопасность, так как они в буквальном смысле создают шлюз на вашем сервере. CGI функционирует независимо, и защита IIS на него не распространяется.

Администратору IIS необходимо реализовать доставку активного содержимого, причем не в ущерб безопасности сервера IIS; этим вопросам и посвящена данная лекция.

Технологии активного содержимого

CGI, ASP и Perl являются самыми распространенными технологиями, используемыми в IIS для обеспечения активного содержимого. ASP (Активные страницы сервера) является технологией серверной части, разработанной Microsoft, которая позволяет комбинировать HTML, сценарии и компоненты многоразового пользования ActiveX или COM для создания динамических веб-страниц. Решение о создании генерируемого сервером содержимого в IIS принимается веб-разработчиками. Давайте рассмотрим создание ASP с помощью CGI.

Общий шлюзовой интерфейс

Технология CGI представляет собой мощную систему, на компьютерах UNIX с ее помощью создается веб-содержимое в реальном времени. Однако каждое приложение является скомпилированной программой, и поэтому каждый раз после внесения изменений требуется перекомпиляция исполняемого файла. Для этого разработаны языки сценариев серверной части, интерпретируемые и исполняемые машиной сценариев с результирующими выходными данными, отправляемыми в приложение веб-сервера через CGI.

Сценарии CGI используются для расширения возможностей веб-серверов, чаще всего для обработки форм. Сценарий выступает в роли моста между ресурсом и сервером; ресурсом в данном случае является объект, обеспечивающий работу службы, например, программа электронной почты или база данных. Сценарий переводит предоставляемую ресурсом информацию в HTML-формат, чтобы сделать ее читабельной для запрашивающего браузера. Это расширяет возможности веб-сервера для обработки информации из всевозможных источников, расположенных на различных узлах.

Информация передается приложению CGI посредством указания имени приложения в адресе URL. Например:

<FORM ACTION=http://www.ваш_сервер.com/scripts/processorder.pl
METHOD=POST>

Здесь URL указан в виде части тега FORM. После получения данных формы сервер ваш_сервер.com передаст управление приложению CGI (в данном случае это интерпретатор Perl, обозначенный файловым расширением .pl), которое обработает сценарий processorder.pl и запрос, после чего вернет страницу, созданную на базе полученных из формы данных.

IIS обеспечивает поддержку сценариев и программ CGI, однако предлагает более интегрированные технологии по работе с динамическим содержимым. IIS поддерживает интерфейс программирования серверных приложений ISAPI для более эффективной работы исполняемых файлов по сравнению со стандартным приложением CGI. ISAPI обеспечивает расширенный доступ к пространству памяти IIS по сравнению с простыми функциями stdin и stdout, на которых основаны многие технологии, например, Perl. Вследствие этого реализуется связь ASP с IIS через интерфейс ISAPI. Сценарии ASP могут непосредственно добавляться в HTML-страницы и выполнять все действия, реализуемые сценариями CGI. Рассмотрим технологию ASP и способы безопасной работы активного содержимого.

Активные страницы сервера (ASP)

Страницей ASP является HTML-страница, содержащая один или более сценариев, обрабатываемых IIS перед передачей пользователю. ASP взаимодействует с IIS через ISAPI и asp.dll (динамически подсоединяемая библиотека ASP), которые являются сопровождающими приложениями в том же пространстве памяти, что и IIS. Это обеспечивает малое время реагирования, так как asp.dll имеет прямой доступ к значениям памяти IIS. Asp.dll выполняется с привилегиями учетной записи IWAM _имя-компьютера. IIS настроен на использование ASP по умолчанию, поэтому для создания динамического содержимого не нужно устанавливать дополнительное программное обеспечение.

Совет. ASP также является сокращением от Application Service Providers (Поставщики услуг приложений). Они обеспечивают управление компьютерными услугами из удаленных центров через интернет или частную сеть.

ASP вызывает компоненты Component Object Model (COM) для обеспечения лучшей функциональности с помощью обработки ресурсов серверной части, однако эта возможность представляет угрозу безопасности. Следует отключить или удалить все ненужные для работы сайта компоненты COM, например, File System Object (Объект файловой системы), предоставляющий веб-приложениям доступ к жестким дискам. Для отключения File System Object выполните следующую команду:

regsvr32 scrrun.dll /u

Для получения более подробной информации о приложениях COM используйте апплет Component Services (Службы компонентов) из папки Administrative Tools (Администрирование).

Совет. Технология COM в интернете известна как ActiveX – программная архитектура, позволяющая создавать приложения из программных компонентов многоразового использования. Метод создания и использования компонентов формирует базу для высокоуровневых программных служб, таких как OLE (сокр. от object linking and embedding – связывание и внедрение объектов), обеспечивающих межпрограммное использование сценариев и передачу данных.

Директивы вставок серверной части (SSI)

Серверная часть представляет собой ограниченный тип приложения CGI. На самом деле ASP распознает элементы SSI просто в виде инструкции при обработке файла. На странице ASP можно использовать инструкцию #include для замещения этой инструкции содержимым другого файла. Следующая строка кода обеспечивает включение файла postalrates.inc в нужное место:

<!-- #include file="/includes/postalrates.inc" -->

Для обработки директивы SSI #include используется библиотека ssinc.dll, а затем asp.dll интерпретирует всю страницу. Это очень удобно при повторном использовании нескольких строк кода на различных страницах. Microsoft рекомендует применять вставку файлов для облегчения работы с ним, так как в этом случае для изменения кода на нескольких страницах требуется изменение только одной. Однако при открытии файла вставки непосредственно в браузере злоумышленник получит доступ к исходному коду, так как файлы вставок не обрабатываются ASP. Для предотвращения этого следует либо связать файлы вставок с расширением .inc с ASP, либо переименовать их, указав расширения .asp, чтобы обеспечить выполнение всего кода сценариев и возврат в веб-браузер только результатов обработки. (Обратитесь к разделу "Совместимость с приложением" в этой лекции.)

IIS поддерживает пять директив SSI:

#config
#echo
#fsize
#flastmod
#exec

Нельзя применять эти директивы на странице ASP. Вместо этого используйте одно из специальных расширений HTML, по умолчанию настроенных на употребление директив SSI в IIS: .stm, .shtm и .shtml. На защищаемом сервере директива #exec должна быть отключена, так как она позволяет выполнять программы командной строки или CGI в контексте веб-сервера в отдельном пространстве памяти. IIS по умолчанию отключает эту директиву, но следует убедиться, что следующий параметр реестра установлен на нуль (или отсутствует): HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\ Parameters\SSIEnableCmdDirective.

ActivePerl

Технология ActivePerl разработана фирмой ActiveState и доступна бесплатно на сайте http://www.activeperl.com/. Perl является популярным языком программирования, в особенности среди разработчиков для платформы UNIX. Windows-версия ActivePerl обеспечивает дополнительные возможности платформы IIS – PerlScript и Perl для ISAPI. Рекомендуется использовать ActivePerl при перемещении веб-сайта с сервера UNIX или по желанию разработчиков.

ASP взаимодействует с IIS через ISAPI и ASP DLL, а Perl использует интерпретатор – комбинированный исполняемый файл Perl.exe. Perl.exe работает как независимое приложение, используя дополнительные ресурсы сервера при каждом его вызове веб-сервером для обработки запроса, что снижает эффективность. При возникновении ошибки внутри сценария веб-сервер будет ожидать истечения срока запроса, так как он не может контролировать Perl. А сценарий CGI тем временем продолжит использование системных ресурсов и в конечном итоге вызовет сбой в работе сервера (сам Perl не влияет на работу веб-сервера).

В отличие от большинства версий Perl PerlScript позволяет внедрять теги сценариев непосредственно в веб-страницу, аналогично VBScript в страницах ASP. При установке ActivePerl выберите инсталляцию Perl для ISAPI, чтобы ActivePerl выполнялось как приложение ISAPI, аналогично ASP.

Совет. Ознакомьтесь с бесплатными безопасными сценариями Perl, которые обеспечивают нужную функциональность и предотвращают возникновение пробелов в безопасности, на веб-сайте http://superscripts.com/resources.

Антон Ворожейкин
Антон Ворожейкин
Россия, с. Новоселье
Дмитрий Клочков
Дмитрий Клочков
Россия, Рубцовск