На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

БАЗОВЫЕ КОНЦЕПЦИИ

Как уже говорилось, Java — это быстро развивающаяся современная техноло­гия. Я не собираюсь учить вас программированию на Java, но вам не помешает узнать об основных принципах создания программ на этом языке. Основываясь на этих знаниях, вы сможете понять модель безопасности Java, а также все ее недостатки. В следующих разделах будет предоставлено достаточное количество информации, чтобы вы усвоили все базовые концепции безопасности программ Java. За более подробной информацией об этом языке программирования обра­титесь к книгам «1001 совет по программированию на Java» и «Библиотека про­граммиста Java» Криса Джамсы (опубликованы на русском языке издательством «Попурри»),
ОГРАНИЧЕНИЯ   ФУНКЦИОНАЛЬНЫХ ВОЗМОЖНОСТЕЙ АППЛЕТОВ
Если загруженный из Internet апплет просто хранится на жестком диске вашего компьютера (а не выполняется внутри броузера), то он не принесет никакого вреда. Он не может ни удалить ваши файлы, ни даже прочитать их. Более того, апплеты могут устанавливать соединение только с тем хостом, с которого они были загружены. У них нет возможности запустить программу на стороне клиен­та, загрузить библиотеки или определить вызовы методов в машинных инструк­циях, с помощью которых можно получить доступ к операционной системе ком­пьютера. Поэтому, если предоставить апплету возможность определить вызовы методов в машинных инструкциях, то он сможет получить доступ к ресурсам компьютера. В этом случае апплет будет уже выполняться за пределами коробки.
Как уже отмечалось, загруженные из Internet апплеты не могут получить IP-адрес машины клиента. Они могут узнать только адрес loopback-хоста (в представле­нии «десятичное с точкой», вроде 127.0.0.1). Хост loopback — это ссылка на текущий хост (ссылка «this» — 2). Однако ссылка на хост loopback не представляет собой никакой ценной информации.
ЧТЕНИЕ и ЗАПИСЬ ФАЙЛОВ с помощью АППЛЕТОВ
В броузерах, поддерживающих Java, стандартные апплеты Java не могут произво-
• дить чтение или запись файлов. Разработанное компанией Sun инструментальное средство просмотра апплетов appletviewer предоставляет апплетам возможность читать и записывать файлы в каталоги, определенные в специальном списке управ­ления доступом. На самом деле appletviewer представляет собой версию созданного компанией Sun броузера HotJava. Если требуемый апплету файл не находится в каталоге, расположенном в списке доступа, то апплет не получит разрешения на чтение, запись или удаление. Точнее говоря, предполагается, что виртуаль­ная машина Java не позволит апплетам проделывать следующие операции:
• Читать файлы с локальных носителей информации
• Записывать файлы на локальные носители информации
• Переименовывать локальные файлы
• Проверять наличие локальных файлов
• Создавать каталоги в файловой системе пользователя
• Просматривать список файлов внутри файла, расположенного в файловой
системе клиента (вроде файла паролей)
• Проверять типы локальных файлов
• Проверять временные отметки в файловой системе клиента
• Проверять размер файлов
РЕДАКТИРОВАНИЕ СПИСКА УПРАВЛЕНИЯ ДОСТУПОМ НА ЧТЕНИЕ Верификатор виртуального кода и диспетчер безопасности являются гарантией
того, что загруженные из Internet апплеты не смогут прочесть файлы, расположениые на вашем жестком диске. Апплеты не могут ни получить доступ к фай­лам, ни даже определить, хранится ли файл на машине. Запрет доступа являет­ся одним из основных элементов модели безопасности Java.
Однако appletviewei позволяет апплетам считывать каталоги или файлы, распо­ложенные в списке управления доступом. По умолчанию в этом списке нет ни одного элемента. Другими словами, appletviewer защищает пользователя от не­корректных апплетов (даже если они созданы самим пользователем).
Чтобы предоставить апплетам возможность считывать файлы и каталоги, нужно внести их имена в свойство acl.read файла c:\hotjava\properties(jiajiee подразумева­ется, что каталог размещается в каталоге
Чтобы разрешить апплетам, загруженным в appletviewer, читать файлы каталога \МуApplets, добавьте в файл hotjava\propertiesследующую строку:
acl.read=\MyApplets
Если же вам нужно, чтобы апплеты могли читать только один файл (например, My File), воспользуйтесь следующей строкой:
acl.read=\MyApplets\MyFile
Чтобы отделить элементы списка управления доступом, воспользуйтесь двоето­чием:
acl.read=c:\MyApplets:\Directoryl\Directory2\Filel\File2
Если разрешить апплету считывать каталог, то он сможет прочитать все располо­женные в нем файлы, включая и входящие в него подкаталоги со всеми их фай­лами. Поэтому будьте внимательны и не давайте апплетам прав доступа сверх
необходимого. Б роуз El HOTJAVA
Компания Sun разработала броузер HotJava, для того чтобы облегчить просмотр и разработку программ Java. В настоя­щее время остальные броузеры, включая
Internet Explorer, содержат многие элементы HotJava. Однако
HotJava был первым броузером, позволившим загружать и локально выполнять фрагменты кода и даже целые программы.
Наиболее сложной проблемой в создании броузеров является обеспечение безопасности пользователя. С появлением каждой новой версии броузера требования безопасности становятся все актуальнее. Импорт, установка и вы­полнение фрагментов кода в сети связаны   огромным количеством проблем.
Есть только одно решение проблемы, связанной с выполнением фрагментов кода. В UotJava создано несколько уровней взаимоблокирующих средств, которые предоставляют достаточно надежную защиту от различных атак ха­керов. Эти уровни безопасности описаны ниже.
Программисты Java как безопасный язык программирова-
ния. И компилятор Java, и виртуальная машина Java производят про­верку апплета на предмет соответствия правилам безопасности.
• Входящий в броузер верификаторвиртуального кода являетсягарантией того, что виртуальный код не нарушает правил безопасности. Благода­ря этому пользователь защищен от виртуального кода, полученного с помощью компилятора хакера.
• Загрузчик класса является гарантией того, что каждый класс не наруша­ет пространства имен или правил доступа.
• Безопасность, связанная с интерфейсом, отслеживает апплеты, спо­собные принести вред системе. Эта безопасность зависит от работы пре­дыдущих уровней.
показано окно броузера выполняющего простой
апплет Java.
РЕДАКТИРОВАНИЕ СПИСКА УПРАВЛЕНИЯ ДОСТУПОМ НА ЗАПИСЬ
Как уже говорилось, app/etviewei позволяет апплетам читать файлы, описанные в списке управления доступом. Кроме того, можно поместить в этот список файлы, которые будут доступны апплетам для записи. Для этого нужно проде­лать те же самые операции, что и при создании файлов для чтения. Только теперь вы должны использовать свойство acl. write:
acl.write=\temp
Можно заставить appletviewer разрешить апплетам производить запись в опреде­ленный файл или набор файлов. Для этого достаточно указать имена этих фай­лов в списке управления доступом, как показано ниже:
acl.write=\temp\MyTempFile
acl.write=\temp\MyTempFile\HerTempFile\HisTen^File
He забывайте о том, что, предоставив апплетам доступ на запись, вы не можете ограничить объем дискового пространства, используемого апплетом (несмотря на то, что апплет будет записывать информацию только в определенные вами файлы).
ЧТЕНИЕ свойств СИСТЕМЫ
Свойства системы — это информация о машине, на которой выполняется Web-бро­узер. Например, если броузер выполняется под управлением Windows 95, то Windows 95 — это свойство операционной системы машины. Иногда подобная информация требуется программе Java. Чтобы помочь ей получить эти данные, язык программирования Java содержит метод System.get Property Далее приво­дится пример использования этого метода:
StringVar ■ System.getProperty(StringKey)
Метод getProperty и класс System являются внутренними элементами Java. Объект StringVar — это переменная типа String, которой присваивается возвращаемое методом значение. Параметр StringKey указывает методу getProperty, какое свой­ство он должен вернуть. В таблице 13.1 приводится список значений StringKey.
Параметр,
Значение
java.version java. vendor java.vendor.url java.class.version
os.name
os.arch
os.version
fde.separator path.separator line.separator_
Номер версии Java
Строка поставщика Java
URL поставщика Java
Номер версии класса Java Название операционной системы
Архитектура операционной системы
Версия операционной системы
Разделитель файлов (например, «/») Разделитель путей (например, «:») _Разделитель строк_
Значения параметра StringKey.
Модель безопасности Java не разрешает апплетам считывать системные свой­ства, указанные в таблице
Параметр
java.home
java.class.path
user, пате user, home user.dir_
Значение
Каталог установки Java
Путь классов Java
Имя пользователя Домашний каталог пользователя .Текущий рабочий каталог пользователя.
Системные свойства, не возвращаемые методом getProperty.
Чтобы прочитать с помощью апплета системное свойство, воспользуйтесь функ­цией System.getProperty(StringKey)upmMeHmB ее к интересующему свойству. Да­лее приводится пример — текст программы, выводящей номер версии Java. Она располагается на компакт-диске, поставляемом вместе с этой книгой (в катало­ге главы 13):
import java.applet.*; import java.awt.*;
public class Sample2 extends Applet implements Runnable {
public void paint (Graphics g) {
g.drawstring(System.getProperty("java.version") , 5, 25);
СОКРЫТИЕ СИСТЕМНЫХ свойств
К сожалению, виртуальная машина Java не предоставляет возможности скрыть от апплетов перечисленные в таблице 13.1 системные свойства. Так как броузе­ры не используют внешние файлы для настройки своей конфигурации, то вы не можете ограничить набор свойств, которые будут доступны программам. Одна­ко обратите внимание на то, что ни одно из приведенных системных свойств не
представляет никакой ценной информации о пользователе.
С другой стороны, с помощью броузера : можно запретить апплетам опре­делять какую-либо информацию о системе. Для этого нужно переопределить свойство в файле \hotjava\properties.Например, чтобы скрыть название операци­онной системы, добавьте в этот файл следующую строку:
os.name=null
ЗАЩИЩЕННЫЕ   СИСТЕМНЫЕ СВОЙСТВА
Как уже говорилось, нельзя скрыть от программ открытые системные свойства. Точно так же вы не можете открыть программам защищенные системные свой­ства. Другими словами приложение Java может просмотреть только десять сис­темных свойств, приведенных в таблице 13.1. Это ограничение представляет достаточно серьезную проблему при сетевой установке броузеров, поддержива­ющих Java. Вы никоим образом не можете предоставить апплету важную инфор­мацию о системе. То есть каждый пользователь сети не может предоставить ап-плету информацию вроде IP-адреса надежного хоста.
Однако с помощью средства appletviewer можно отредактировать файл \hotjava\propertiesTaK, чтобы апплеты могли считывать системную информацию. Например, чтобы разрешить апплетам записывать имя пользователя, добавьте к этому файлу следующую строку:
user.name. applet=true

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика