Несмотря на то что в ядре языка JavaScript и базовой объектной модели на сто_ роне клиента отсутствуют средства для работы с сетевым окружением и файло_ вой системой, необходимые в основном для злонамеренного программного кода, тем не менее ситуация не такая простая, как кажется на первый взгляд. В боль_ шинстве броузеров JavaScript_код используется как «механизм исполнения» других программных компонентов, таких как элементы управления ActiveX в IE и модули расширения в других броузерах. Тем самым в распоряжении у сце_ нариев на стороне клиента оказываются мощные средства. В главе 20 представ_ лены примеры, в которых для организации взаимодействия по протоколу HTTP применяется элемент управления ActiveX, а в главах 19 и 22 для хранения ин_ формации на стороне клиента и отображения улучшенной графики используют_ ся модули расширения Java и Flash.
Вопросы безопасности приобретают особый смысл, поскольку элементы управле_ ния ActiveX и Java_апплеты могут иметь, например, низкоуровневый доступ к се_ тевым возможностям. Защитная «песочница» для Java не позволяет апплетам взаимодействовать с серверами, отличными от того, откуда получен апплет; тем самым закрывается брешь в системе безопасности. Но остается основная пробле_ ма: если модуль расширения может управляться из сценария, необходимо полное доверие не только системе безопасности броузера, но и системе безопасности само_ го модуля расширения. На практике модули расширения Java и Flash, похоже, не имеют проблем с безопасностью и не вызывают появление этих проблем в кли_ ентском JavaScript_коде. Однако элементы управления ActiveX имеют более пе_ строе прошлое. Броузер IE обладает возможностью доступа из сценариев к самым разным элементам управления ActiveX, которые являются частью операционной системы Windows и которые раньше уже были источниками проблем безопасно_ сти. Однако к моменту написания этих строк эти проблемы были решены.