Адаптация антивирусного сайта к актуальным пользователям антивирусных средств(X)

А.М.Терентьев, О.Г.Горбанева, А.С.Львова

При построении сайта, носящего технологический, а не рекламный характер, на первые места вместо коммерческих критериев выходят цели оптимальности - построения, удобства пользователей, эксплуатации, внесения изменений. Данная работа описывает ряд методов и приемов оптимизации, использованных при построении антивирусного сайта http://av.cemi.rssi.ru.


Динамическое разделение полномочий пользователей

Стандартный механизм Apache, предоставляющий доступ к областям сайта, дает возможность двух вариантов разделения пользователей с помощью операторов deny, allow и satisfy. А именно, либо часть пользователей получают доступ свободно, остальные вводят логин и пароль. Либо же часть пользователей вводят логин и пароль, остальным доступ запрещен. Нам представляется, что указанный механизм недостаточно гибок и может быть расширен, причем управление доступом остается теми же операторами того же конфигурационного файла. А именно, явное указание allow позволит свободный доступ, явное указание deny – запрет, а отсутствие оператора (или маскирование его комментарием) выдаст запрос на ввод логина и пароля.

Реализация такой возможности базируется на CGI. Для ее исполнения представим, что основные файлы сайта находятся в каталоге C:/SITE/AV, а регламентируемая область – в каталоге C:/SITE/ANTIVIR. Тогда, для исполнения описываемого гибкого алгоритма, прежде всего следует определить в основном конфигурационном файле Apache http.conf следующие конструкции (на рис. 14 для сокращения объема показаны только операторы разделов и задающие необходимые условия для описываемых свойств).


Рис. 14. Операторы конфигурационного файла задания областей сайта


Далее, вместо постоянной html-страницы, организующей в каталоге C:/SITE/AV ссылку на html-файл закрываемой антивирусной области, делаем динамически формируемую CGI-страницу. Для этого основной текст html-страницы помещается в заранее заготовленную форму, скажем, R3F1.FRH; концовка страницы в форму R3F2.FRH, а вместо страницы R3.HTM ставится исполняемый CGI-файл R3.CGI, показанный на рис. 15.

Операторы этого файла динамически формируют показываемую страницу из трех частей. Начало и конец берутся из файлов R3F1.FRH и R3F2.FRH, а в средней части показывается текущий ip-адрес пользователя и исполняется чтение файла ACCESS.CNF из каталога с именем «..\ANTIVIR», т.е. дочернего конфигурационного файла. По строке, соответствующей ip-адресу пользователя, образуется соответственно 3 ситуации: нахождение ее с ключевым словом allow, нахождение с ключевым словом deny либо отсутствие строки.


Рис. 15. Текст CGI-модуля формирования страницы парольного входа


В каждом из трех случаев формируется свой вариант средней части html-страницы. Для случая allow формируется вариант свободного входа, показанный на рис. 16. При отсутствии оператора формируется вариант парольного входа, показанный на рис. 17. В случае же оператора deny формируется страница, на которой ссылка на область Download отсутствует вообще (рис. 18).


Рис. 16. Формируемая страница свободного входа


Рис. 17. Формируемая страница парольного входа


Рис. 18. Формируемая страница с отсутствием входа


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


Рис. 19. Пример конфигурационного файла в области входа


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


Оптимизация баннера

Особая задача оптимизации сайта стоит в случае построения баннеров. При конструировании антивирусного сайта было желание создать сложный анимированный баннер, включающий несколько анимационных блоков: факсимиле автора сайта; мотивационную картинку и итоговую статичную картинку-логотип, составленную из вышеприведенных элементов и добавленной надписью «Антивирусный сайт».

“Лобовое” исполнение желаемого с помощью Awicons v.9 2.0 как средства подготовки кадров и Ulead GIF Animator 5 как формирователя GIF-анимации давало желаемый результат, но приводило к недопустимо высоким объемам результирующего GIF-файла, порядка 75Кб. Учитывая ориентацию сайта в том числе и на DialUp-пользователей, работающих через модемы, этот объем представляется недопустимо высоким для баннера 120х60: время его загрузки (10-15с) сравнимо с временем загрузки всех остальных компонентов web-страницы и раздражает пользователей, особенно тех, кто не пользуется анимацией в браузере.

Предлагаемым методом решения проблемы является сочетание оптимизации по числу компонентных цветов исходных кадров и отложенной выборочной загрузки баннера.

Стандартное использование шрифта PragmaticaCTT Italic для анимации имени и фамилии автора сайта и превращения его инициалов в факсимильный логотип дает до 10 основных цветов при прозрачном фоновом цвете, или около 3Кб на 1 кадр анимации. В то же время экспериментально выявлено, что читабельность шрифта настолько высока, что вполне достаточно использования двух основных цветов. Творческой работой художника была реорганизация надписи из десяти цветовых оттенков переднего плана в 2 цвета. Эта работа была выполнена лишь один раз для полной надписи; предшествующие кадры «появления» надписи получены пошаговыми стираниями букв полной надписи в результирующем рисунке. Результат позволил получить 12 анимационных кадров по 1,3 Кб каждый, которые при анимационной компрессии были сжаты до 3Кб GIF-файла.

Вторая часть картинки - лебедь, клюющий червяков, – дала еще 4 цвета переднего плана. Еще 2 цвета добавились в последнем, статичном кадре, который задерживается на экране несколько секунд. Такой подход обеспечил после анимационной компрессии формирование файла размером 16Кб (загрузка примерно 2,5-3с при модемной скорости 33600Бит/с).

Однако, даже эти 3с нас полностью не удовлетворили. Являясь частью стримера сайта, размещенный в левом верхнем углу баннер тормозил загрузку остальных частей web-страницы и отвлекал внимание от ее содержания, в остальном текстового. Кроме того, как выяснилось, ряд пользователей до сих пор работают с устаревшими браузерами, не показывающими анимацию, либо отключают исполнение Javascript, работая с домашних ПК; таким пользователям нет необходимости доставлять анимированные картинки. В связи с этим, размещение баннера на сайтовой странице исполняется в два этапа. Первым этапом загружается статичная картинка размером 1,5Кб, являющаяся логотипом сайта. Одновременно включается счетчик времени на 4 сек, которых вполне достаточно для загрузки остальных частей 4х-фреймовой страницы. По истечении 4с, если включена поддержка Javascript 1.2 и версия браузера позволяет показывать GIF-анимацию, вместо статичной картинки загружается анимированный баннер. В это время, как показывает практика, пользователь читает сводку новостей на первой странице и определяется с дальнейшей навигацией по сайту, так что догрузка баннера происходит психологически незаметно.

Часть html-файла, осуществляющая указанную отложенную догрузку, приведена на рис. 20.

Упомянутый статичный рисунок – логотип сайта виден в левом верхнем углу рисунка 22.


Рис. 20. Фрагмент html-страницы с отложенной загрузкой баннера


Автоматическое формирование данных карты сайта

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

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

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

Страница содержит HTML-таблицу, в которой в месте желаемого показа даты вставлен SSI-оператор flastmod со ссылкой на соответствующий файл. Ранее всех операторов flastmod присутствует оператор задания желаемого формата показа даты config timefmt (см. рис. 21). Сочетание этих операторов обеспечивает динамический захват дат последних модификаций соответствующих файлов и показ их при формировании web-страницы. Текст в других колонках таблицы идентифицирует раздел сайта или имя интересуемого документа. Пользователь при взгляде на такую таблицу легко сможет определить, какие именно документы или разделы сайта недавно изменились, и при желании их осмотреть.

Формат даты следует, безусловно, конструировать из соображений единообразия представления дат на всём сайте.


Рис. 21. Метод CGI формирования дат файлов на карте сайта


Результирующий вид страницы показан на рис. 22. При изменении любого из использованных при построении такой страницы файлов изменится также и дата его образования, что будет немедленно отражено при показе web-страницы.

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


Рис. 22. Видимая страница антивирусного сайта – часть карты сайта


Второй уровень рассматриваемых средств автоматизации представления актуальных изменений на сайте предусматривает автоматическое выделение альтернативными атрибутами (вероятно, цветом) строк, соответствующих обновленным, не просмотренным еще данным пользователем файлам. Этот уровень до настоящего времени не реализован и предполагает задействование аппарата cookie на ПК пользователя в сочетании с Perl-программой формирования нужного атрибута на антивирусном сервере.

Реализация аппарата cookie позволит адаптировать сайт под конкретного пользователя. При этом, помимо указанных здесь сервисов, предполагается также реализовать ряд других полезных возможностей. Задействование аппарата cookie предполагается выполнить при последующих модификациях сайта в конце 2006 г.


Автоматический показ данных пользователя

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

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


Рис. 23. Пример служебного окна сайта с данными пользователя


Для вызова такой сводки достаточно навести курсор мыши на надпись “NEW”, видимую переливающимися цветами в правом верхнем углу сайта (рис. 22). По удалении курсора мыши с этого места, окно сводки автоматически исчезает. Между прочим, такой алгоритм блокирует возможность просмотра пользователем HTML-кода страницы, включенной в такое всплывающее окно.


Выводы

Расмотренные в данной работе программные средства конструирования специфических некоммерческих проблемно-ориентированных сайтов задействованы и работают на Антивирусном сайте ЦЭМИ РАН http://av.cemi.rssi.ru.

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

Часть предложенных технологий известна конструкторам сайтов. Некоторые же, например описанное расширение возможностей стандартных средств разграничения доступа Apache или добавление комментариев в строки конфигурации так, чтобы это не отражалось в errorlog-файле, открыты авторами и впервые опубликованы в данной работе. Авторы выражают надежду, что материалы данной работы окажутся интересными разработчикам при конструировании целевых сайтов. Полезность их зримо доказана эксплуатацией ЦЭМИ.



(X)Работа выполнена при финансовой поддержке РФФИ, проект N 04-07-90260в

Статья опубликована в 2005 г.