Книга: JavaScript. Подробное руководство, 6-е издание
13.6.1. Чего не может JavaScript
13.6.1. Чего не может JavaScript
Броузеры - это первая линия обороны против злонамеренного кода, поэтому они просто не поддерживают некоторые функциональные возможности. Например, клиентский JavaScript не предоставляет никакого способа записи или удаления файлов и каталогов на клиентском компьютере. То есть программа на языке JavaScript не может удалить данные или установить вирус. (Тем не менее в разделе 22.6.5 вы узнаете, как на языке JavaScript реализовать чтение файлов, выбранных пользователем, а в разделе 22.7 - как настроить безопасную частную файловую систему, в пределах которой программы на языке JavaScript смогут работать с файлами.)
Аналогично клиентский JavaScript не имеет универсальных механизмов сетевых взаимодействий. Клиентский сценарий на языке JavaScript может управлять протоколом HTTP (как описывается в главе 18). А другой стандарт, примыкающий к стандарту HTML5, известный как WebSockets, определяет прикладной программный интерфейс, напоминающий сокеты, позволяющий взаимодействовать со специализированными серверами. Но ни один из этих интерфейсов не позволяет получить непосредственный доступ к сети. На клиентском JavaScript нельзя написать программу универсального сетевого клиента или сервера.
Вторая линия обороны против злонамеренного программного кода - это наложение ограничений на некоторые поддерживаемые функциональные возможности. Ниже перечислены некоторые ограничения:
• JavaScript-программа может открыть новое окно броузера, но из-за того, что многие рекламодатели злоупотребляют этой возможностью, большинство броузеров позволяют ограничить эту возможность так, чтобы всплывающие окна могли появиться только в ответ на действия пользователя, такие как щелчок мыши.
• JavaScript-программа может закрыть окно броузера, открытое ею же, но она не может закрыть другое окно без подтверждения пользователя.
• Свойство value
HTML-элемента FileUpload
не может быть установлено программно. Если бы это свойство было доступно, сценарий мог бы установить его значение равным любому желаемому имени файла и заставить форму выгрузить на сервер содержимое любого указанного файла (например, файла паролей).
• Сценарий не может прочитать содержимое документов с других серверов, отличных от сервера, откуда был получен документ с данным сценарием. Аналогичным образом сценарий не может зарегистрировать обработчики событий в документах, полученных с других серверов. Это предотвращает возможность подсматривания данных, вводимых пользователем (таких как комбинации символов, составляющих пароль) в других страницах. Это ограничение известно как политика общего происхождения (same-origin policy) и более подробно описывается в следующем разделе.
Обратите внимание, что это далеко не полный список ограничений, имеющихся в клиентском JavaScript. Различные броузеры используют различные стратегии безопасности и могут накладывать различные ограничения. Кроме того, некоторые броузеры могут также предоставлять возможность ужесточать или ослаблять ограничения с помощью пользовательских настроек.
- 22.8. Базы данных на стороне клиента
- 20.2.1. Атрибуты cookie: срок хранения и область видимости
- При копировании с жесткого диска на «флэшку» иногда появляется сообщение о дополнительной присоединенной информации, кот...
- Бывает, что много файлов удаляется быстро, а один файл может удаляться несколько минут. В чем причина?
- Вот уже в который раз при работе в сети появляется сообщение от других пользователей. Что это может быть?
- У меня проблемы со здоровьем. Может ли мне помочь Интернет?
- При запуске программы появляется сообщение Инструкция по адресу 0х77ddb1d1 обратилась к памяти по адресу 0x0080002c. Пам...
- При попытке установить принтер появляется сообщение Невозможно завершение операции. Подсистема печати недоступна. В чем ...
- Листинг 9.3. Пример JavaScript-файла, закрывающего всплывающее окно
- Может ли посетитель попасть в нужный раздел сайта непосредственно с домашней страницы?
- Глава 12 Краткий курс JavaScript
- Зачем вашей компании может быть нужен корпоративный блог?