Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПОКС.doc
Скачиваний:
13
Добавлен:
04.12.2018
Размер:
536.58 Кб
Скачать

31. Разработка клиентской части сетевых приложений с помощью Java апплетов.

Программирование и использование апплетов

Общие сведения об апплетах

Апплеты это маленькие прикладные программы на языке Java, которые размещаются на серверах Internet, транспортируются клиенту по сети, автоматически устанавливаются и запускаются на месте как часть документа WWW. Апплеты позволяют вставлять в документ, распространяемый по сети, поля, содержание которых меняется во времени (например, текущая дата, текущий курс валюты и т.п.), организовывать в нем "бегущие строки",

Рис. 1. Выполнение Java-апплета

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

Обеспечение безопасности при распространении апплетов

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

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

байткод не выдает ссылок (указателей) на объекты, расположенные вне JavaVM;

байткод не нарушает ограничений по доступу к ресурсам компьютера пользователя апплета;

доступ к любым объектам апплета осуществляется в соответствии с их типом (строгая типизация);

все параметры инструкций JavaVM имеют правильные типы;

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

Наконец, четвертый уровень защиты связан с такой организацией интерфейсов с сетевыми протоколами (HTTP, FTP и др.), которые обеспечивают доступ не ко всей сети, а только к тем серверам, с которых загружаются классы, используемые интерпретируемым апплетом. Кроме того, имеется возможность организовать барьер, предотвращающий доступ к ресурсам компьютера пользователя апплета со стороны сети.