|
2004 г.
Достоинства и проблемы HTML Application
Вячеслав Белов,
HTА (HTML Application) - простая технология, позволяющая создавать полезные приложения даже без знания серьезных языков программирования. Вот только как быть с безопасностью?
В основе разработанной Microsoft технологии исполнения HTML-приложений вне веб-браузера, получившей название HTA (HTML Application), заложена благородная идея: помочь пользователям, не обремененным познаниями в области программирования на C+, Visual Basic, Delphi и других "тяжелых" языках, создавать приложения, основанные на более известных языках сценариев VBScript и JavaScript, а также в стандарт Стандарт (от англ.standard— норма, образец) в широком смысле слова— образец, эталон, модель, принимаемые за исходные для сопоставления с ними др. подобных объектов.ном HTML-коде. Понятно, что, запатентовав подобную технологию, корпорация попытается обеспечить ее поддержку другими операционными системами. И все бы ничего, если бы не формат файлов, с помощью которого планируется продвигать эту технологию.
Вообще-то, сам по себе формат HTA достаточно удобен. К примеру, именно на его базе
построена справочная система Система (от др.-греч. — «сочетание»)— множество взаимосвязанных элементов, обособленное от среды и взаимодействующее с ней, как целое. Windows. Благодаря ему же обычные HTML-страницы запускаются
без браузера и полностью отображаются в окне HTA-файла - со всеми ссылками, графикой,
эффектами и скриптами. Создавать и редактировать подобные файлы гораздо проще и быстрее,
чем, например, программу на С или Delphi. Удобство Эргономичность— в изначальном смысле это эффективность инструмента производства или системы в эргономике. Под эффективностью при этом понимается наибольшая производительность при наименьшей вероятности ошибки. Ныне термин употребляется в более широком смысле, обозначая общую степень удобства предмета (не обязательно средства производства), экономию времени и энергии при использовании предмета. Например: «эргономичный токарный станок», «эргономичный электромобиль» или даже «эргономичный стул». работы с HTA еще и в широкой доступности
редакторов - для этого формата могут использоваться как обычные текстовые редакторы вроде
Notepad, так и специализированные HTML-редакторы (наподобие FrontPage или Macromedia Macromedia Inc. — один из крупнейших производителей программ, так или иначе связанных с WEB. Компания была основана в 1992году в Сан-Франциско, Калифорния из Authorware и MacroMind-Paracomp. Dreamweaver).
Создание HTA-документов сводится к установке специальных атрибутов в разделе <head>…</head> обычной
HTML-страницы, после чего остается только сохранить ее с расширением. hta. Вот пример
листинга простого HTA-файла:
<html> <head>
<HTA: APPLICATION id="HTA" applicationName="TEST HTA" border="thin" borderStyle="normal" caption="yes" icon="С:/temp/favicon. ico" maximizeButton="yes" minimizeButton="yes" showInTaskbar="no" windowState="normal" innerBorder="yes" navigable="yes" scroll="auto" scrollFlat="yes" singleInstance="yes" sysMenu="no" contextMenu="yes" selection="yes" version="1.0" />
</head>
<body>Текст страницы</body>
</html>
При попытке открыть HTA-файл в браузере пользователю предлагается сохранить этот файл
на жестком диске, так как браузер не интерпретирует расширение HTA. Windows же определяет
HTA-файл как исполняемый и потому запускает его по щелчку на пиктограмме или через командную
строку.
Благодаря тому, что стандарт HTA позволяет исполнять сценарии Java и VB, в этом формате
можно создать много полезных приложений, от простого календаря и конвертора валют до ньюсридера
и менеджера онлайн-доступа к блогам, сайтам и форумам. Поэтому, обладая даже небольшим
опытом создания веб-страниц и написания простых Java-скриптов, пользователь может создавать
HTA-файлы, которые ни по функционал Функционал— числовая функция, заданная на векторном пространстве. Функционал берёт в качестве аргумента элемент линейного пространства (вектор) и возвращает в качестве результата скаляр. Довольно часто в роли линейного пространства выступает то или иное пространство функций (непрерывные функции на отрезке, интегрируемые функции на плоскостит.д. Поэтому, неформально говоря, функционал— это функция от функций, переводящая функцию в число (действительное или комплексное). Преобразования функций— операторы— составляют отдельную тему.ьности, ни по дизайну не уступают небольшим программам,
написанным на более серьезных языках.
Но какая бочка меда обходится без ложки дегтя? Это касается и HTA. К сожалению, HTA-файлы
нельзя просматривать в браузере, а значит, все средства защиты веб-браузеров оказываются
бесполезны для них. Именно этот факт чаще всего приводится в качестве аргумента против
HTA. Ведь в обход защиты с помощью VBscript и Jscript вполне можно организовать запись
данных в реестр в фоновом режиме, запускать сторонние программы и скрипты Скриптовый язык (англ.scripting language, в русской литературе принято название язык сценариев)— язык программирования, разработанный для записи «сценариев», последовательностей операций, которые пользователь может выполнять на компьютере. Простые скриптовые языки раньше часто называли языками пакетной обработки (англ.batch languages или job control languages). Сценарии обычно интерпретируются, а не компилируются (хотя всё чаще применяют компиляцию каждый раз перед запуском)., выполнять чтение
и запись на диск. Поэтому хакеры достаточно хорошо освоили этот стандарт и с успехом применяют
его для своих целей.
Ярким примером использования злоумышленниками HTA являются разнообразные черви, попадающие на наши компьютеры Компьютер (англ.computer— «вычислитель»), электронная вычислительная машина (ЭВМ)— вычислительная машина, предназначенная для передачи, хранения и обработки информации. через почтовые программы. Причем некоторые из них приходят прямо в теле письма (HTML-страницы) в виде скрипта, который запускается при открытии сообщения.
Используя известную дыру Scriptlet. Typelib в Internet Explorer, червь с помощью скрипта
создает файлы, никак не сообщая об этом пользователю. Обычно создается сценарий VBscript
в виде HTA-файла, который и содержит тело вируса. Название такого файла обычно имитирует
имя какого-либо системного файла (например, fonts. hta или system. hta) и располагается
в каталоге автозагрузки. Поэтому при очередном запуске Windows автоматически запускается
и созданный HTA-файл. Когда код червя из HTA-файла получает управление, он запускает программу
Outlook со скрытым окном и создает в ней письма, адресованные всем, чьи адреса хранятся
в адресной книге Outlook. Червь создает письма в формате HTML и включает в них свой сценарий.
Таким образом, червь распространяет сам себя. Кстати, для сценариев, не использующих HTML-код
и основное HTA-окно, нет необходимости указывать атрибуты HTA-документа. В этом случае
код записывается между тэгами <script> и </script>.
Похожий принцип используют и вирусы Вирус (лат.virus— яд)— субклеточный инфекционный агент, который может воспроизводиться только внутри живых клеток организма. По природе вирусы являются автономными генетическими элементами, имеющими внеклеточную стадию в цикле развития. Вирусы представляют собой микроскопические частицы, состоящие из молекул нуклеиновых кислот— (ДНК или РНК, некоторые, например, мимивирусы, имеют оба типа молекул), заключённые в белковую оболочку, способные инфицировать живые организмы. Белковую оболочку, в которую упакован геном, называют капсидом. Наличие капсида отличает вирусы от вирусоподобных инфекционных нуклеиновых кислот— вироидов. Вирусы, за редким исключением, содержат только один тип геномной нуклеиновой кислоты. Классифицируют ДНК-содержащие вирусы и РНК-содержащие вирусы, на чем основана классификация вирусов по Балтимору. Ранее к вирусам также ошибочно относили прионы, однако впоследствии оказалось, что эти возбудители представляют собой особые инфекционные белки и не содержат нуклеиновых кислот., распространяемые вместе с программами. В этом случае вместе с программой на ваш диск может попасть и такой безобидный с виду файл, как
readme. hta или help. hta. При первом же запуске этих файлов вместе с демонстрацией текста
в фоновом режиме производится ряд записей в реестр. И, несмотря на все ваши последующие
действия, ваш браузер будет содержать дополнительные панели, кнопки или неизменную стартовую
страницу, до тех пор пока вы не обнаружите сам код вируса в hta-файле.
На этом фоне куда более безопасно выглядят различные шутки на основе HTA-файлов. Например, однажды при запуске своего компьютера я обнаружил необычное окно с сообщением: "Внимание! Ваш винчестер содержит битые кластеры и сейчас будет отформатирован". Меня насторожила надпись "VBScript" в заголовке окна. Заподозрив неладное, я обратился к папке автозагрузки в главном меню и обнаружил там файл win. hta с таким содержимым:
<script language=VBScript Visual Basic Scripting Edition (обычно просто VBScript) — скриптовый язык программирования, интерпретируемый компонентом Windows Script Host. Он широко используется при создании скриптов в операционных системах семейства Microsoft Windows.>
Set Shl = CreateObject ("WScript. Shell")
MsgBox ("Внимание! Ваш винчестер содержит битые кластеры и сейчас будет отформатирован…")
window. close () </script>
Этот сценарий при каждой загрузке Windows создавал всплывающее окно с предупреждением
о форматировании жесткого диска. Конечно, диск не форматировался, так как сценарий не
содержал такой команды, но поволноваться заставлял.
Но главное применение возможностей скриптовых языков и HTA заключается, разумеется, отнюдь не в вирусах и шутках. Например, в интернет-кафе HTA можно использовать для контроля за работой компьютеров, для ведения индивидуальной статистики, ограничения доступа к дискам и папкам и т.п. Веб-мастер или веб-администратор, обслуживающие несколько сайтов,
могут организовать специальные инструменты быстрого доступа и контроля за отдельными страницами
сайтов - например, создать прямо в браузере "порт" для внесения на сайт новостей, которые
будут появляться в режиме реального времени. Таким образом, каждый может найти в этой
технологии что-то полезное для себя.
Хотелось бы обратить внимание тех, кто продолжает относиться к HTA скептически, на то, что Microsoft рекомендует использовать этот формат для решения небольших текущих задач, но не для обмена между пользователями. Другими словами, если пользоваться только собственными HTA-файлами, не передавать их кому-либо и не копировать чужие, то о безопасности можно не беспокоится. Если же Microsoft захочет изменить статус HTA-файлов, для этого придется
провести серьезную работу по обеспечению безопасности. Если это удастся сделать в ближайшее
время, то вполне возможно, что новая технология быстро приобретет такую же популярность,
как JScript JScript— скриптовый язык программирования компании Майкрософт, являющийся реализацией стандарта ECMAScript. и VBscript.
| И все-таки - безопасность |
На сайте размещена " заплатка" для дыры Scriptlet. Typelib в Internet Explorer. Если же вы не планируете использовать HTA-файлы, но хотите защитить компьютер от случайных вирусов, использующих этот формат, лучше отключить поддержку этих файлов. Для этого дважды кликните по пиктограмме Мой компьютер на рабочем столе, откройте Панель управления, выберите в меню окна команду Сервис > Свойства папки, перейдите на вкладку Тип файлов, выберите тип HTA-HTML application и щелкните наM кнопке Удалить.
| Атрибуты HTA-документов |
| Атрибут |
Описание |
| applicationName |
имя приложения, использующегося для идентификации при исполнении HTA-документа |
| border |
вид обрамления окна; среди возможных значений - thin, dialog, none, thick |
| borderStyle |
стиль обрамления окна; среди возможных значений - complex, normal, raised, static,
sunken |
| caption |
указывает, нужно ли показывать заголовок окна (yes/no) |
| icon |
путь к пиктограмме, которая будет показана в заголовке; допустимые параметры пиктограммы
- 32x32 пикселей, формат. ICO |
| maximizeButton |
указывает, будет ли активизирована кнопка "восстановить" в заголовке документа (yes/no) |
| minimizeButton |
указывает, будет ли активизирована кнопка "свернуть" в заголовке документа (yes/no) |
| showInTaskbar |
указывает, будет ли показан документ в панели инструментов Windows (yes/no) |
| windowState |
первоначальный размер окна; среди возможных значений - normal, minimize, и maximize |
| innerBorder |
указывает, будет ли окно иметь внутреннюю границу (yes/no) |
| navigable |
указывает, будут ли ссылки открываться в отдельных окнах или в одном (yes/no) |
| scroll |
указывает, будет ли окно иметь полосу прокрутки (yes/no) |
| scrollFlat |
указывает вид полосы прокрутки: 3D или нет (yes/no) |
| singleInstance |
определяет, возможно «Возможно» (фр.Peut-tre)— фильм режиссёра Седрика Клапиша 1999 года. ли одновременное открытие нескольких окон для HTA-документов
(yes/no) |
| sysMenu |
указывает, будут ли показаны составляющие заголовка окна (yes/no) |
| contextMenu |
указывает на доступность контекстного меню, вызываемого правой кнопкой мыши (yes/no) |
| selection |
указывает, можно ли выделять текст в HTA-окне (yes/no) |
| version |
версия HTA |
|
|