Клиентский JavaScript 1.3




Глава 14 Безопасность в JavaScript


    Глава 14 Безопасность в JavaScript
    JavaScript автоматически предотвращает доступ скриптов одного сервера к свойствам документов на других серверах. Это не даёт скриптам возможность получать закрытую информацию, такую как структура...
    Политика Одного Источника
    Политика одного источника работает так: при загрузке документа из одного источника, скрипт, загруженный из другого источника, не может получить или установить конкретные свойства конкретного брауз...
    Таблица 14.1 Сравнения источника...
    URL РезультатПричина http://company.com/dir2/other.html Успешно http://company.com/dir/inner/another.html Успешно http://www.company.com/dir/other.html Неудачно Разные домены file://D|/myPage.htm...
    Таблица 14.2 Свойства - субъекты проверки источника
    Объект Свойства - субъекты проверки document Для чтения и записи: anchors, applets, cookie, domain, embeds, forms, lastModified, length, links, referrer, title, URL, formName (для каждой именованн...
    Проверка источника document.domain
    Имеется одно исключение из правила одного источника. Скрипт может устанавливать в значение document.domain суффикс текущего домена. Если это сделано, более краткий домен используется для последующ...
    Проверка источника именованных форм
    Именованные формы являются субъектами для проверки источника, как видно из Таблицы 14.2 . JavaScript 1.1 и более ранние версии. Именованные формы не являются субъектами для проверки источника, хот...
    Проверка источника и тэги SCRIPT, загружающие документы
    Если Вы загружаете документ с любым URL, кроме file:, и этот документ содержит тэг SCRIPT SRC="...", внутренний атрибут SRC не может обратиться к другому URL file:. JavaScript 1.1 и более ранние в...
    Проверка источника и слои
    Слой/layer может иметь иной источник, нежели окружающий документ. Проверки источника осуществляются между документами и скриптами в слоях из различных источников. То есть, если документ содержит о...
    Проверка источника и Java-аплеты
    Ваша HTML-страница может содержать тэги APPLET для использования аплетов Java. Если тэг APPLET имеет атрибут MAYSCRIPT, этот аплет может использовать JavaScript. В это случае аплет является субъек...
    Использование маркированных скриптов
    Модель безопасности JavaScript для маркированных скриптов базируется на модели безопасности Java для маркированных/signed объектов. Вы можете маркировать инлайн-скрипты (те, которые находятся в тэ...
    Маркированные скрипты. Введение.
    Маркированный скрипт запрашивает расширенные привилегии, получая доступ к закрытой информации. Он запрашивает эти привилегии через использование LiveConnect и Java-классов, называемых Java Capabil...
    SSL-серверы и немаркированные скрипты
    Альтернативой маркировке Ваших скриптов утилитой Netscape Signing Tool является обслуживание их сервером безопасности/secure server. Navigator рассматривает все страницы, обслуживаемые SSL-серверо...
    Принципалы кодовой базы
    Как и Java, JavaScript поддерживает принципалы кодовой базы/codebase principals. Принципал кодовой базы это принципал, полученный из источника скрипта, а не при проверке цифровой подписи сертифика...
    Скрипты, маркированные разными принципалами
    JavaScript отличается от Java в нескольких важных вопросах, касающихся безопасности. Java маркирует классы и может защищать внутренние методы этих классов через механизм public/private/protected....
    Проверка принципалов окон и слоёв
    Чтобы защитить маркированные скрипты от изменений, JavaScript имеет набор для проверки на уровне контейнера, где контейнером является окно или слой. Для доступа к свойствам маркированного контейне...
    Рисунок 14.1 Присвоение принципалов слоям
    Этот метод работает так: каждый скрипт на странице рассматривается в порядке определения, javascript: URL'ы считаются новыми немаркированными скриптами. Если это первый скрипт на странице, принцип...
    Идентифицирование маркированных скриптов
    Вы можете маркировать инлайн-скрипты, скрипты обработчиков событий, JavaScript-файлы и объекты/entities JavaScript. Вы не можете маркировать URL'ы javascript:. Вы обязаны идентифицировать то, что...
    Атрибут ARCHIVE
    Все маркированные скрипты (инлайн-скрипт, обработчик события, файл JavaScript или объект JavaScript) требуют наличия в тэге SCRIPT атрибута ARCHIVE, значением которого является имя JAR-файла, соде...
    Атрибут ID
    Инлайн-скрипты и скрипты в обработчиках требуют наличия атрибута ID. Значением этого атрибута является строка, которая соотносит скрипт с его подписью в JAR-файле. ID обязан быть уникальным в JAR-...
    Использование расширенных привилегий
    Как и маркированные объекты Java, маркированные скрипты используют вызовы Netscape-классов безопасности Java для запрашивания расширенных привилегий. Java-классы расширяются в Java Capabilities AP...
    Цели/Targets
    Типы информации, которую Вы можете получить, называются targets. Они перечислены в таблице. Target/ЦельОписание UniversalBrowserRead Позволяет читать привилегированные данные из браузера. Это даёт...
    Возможности JavaScript, требующие наличия привилегий
    В этом разделе дан список возможностей языка JavaScript, которые требуют расширенных привилегий, и цели, используемые для доступа к каждой возможности. Немаркированные скрипты не могут использоват...
    Пример
    В этом скрипте имеется кнопка, которая, когда её нажимают, выводит диалоговое окно alert, содержащее часть истории URL браузера. Для правильной работы этот скрипт обязан быть маркированным. SCRIPT...
    Написание скрипта
    В этом разделе специально рассматривается с написание маркированных скриптов. Дополнительно см. статьи View Source , Applying Signed Scripts ....
    Захват событий из других серверов
    Если окно с фрэймами должно захватывать события на страницах с других серверов, используйте метод enableExternalCapture в маркированном скрипте, запрашивающем привилегии UniversalBrowserWrite. Исп...
    Изолирование немаркированного...
    Для создания немаркированного слоя внутри маркированного контейнера Вы должны выполнить некоторые дополнительные шаги, чтобы скрипты в немаркированном слове работали правильно. Вы обязаны установи...
    Интернациональные символы в маркированных скриптах
    При использовании в скриптах интернациональные символы могут появляться в строковых константах и в комментариях. Ключевые слова и переменные JavaScript не могут содержать интернациональных специал...
    Функции импорта и экспорта
    Вам могут понадобиться интерфейсы для вызова в засекреченных контейнерах (окнах и слоях). Для этого используйте операторы import и export. Экспортирование имени функции делает её доступной для имп...
    Пример
    В это примере имеются три страницы в наборе фрэймов/frameset. Файл containerAccess.html определяет этот набор фрэймов и вызывает пользовательскую функцию, когда набор фрэймов загружен. Одна страни...
    Подсказки для написания безопасного JavaScript
    В это примере имеются три страницы в наборе фрэймов/frameset. Файл containerAccess.html определяет этот набор фрэймов и вызывает пользовательскую функцию, когда набор фрэймов загружен. Одна страни...
    Проверка размещения скрипта
    Если Вы промаркировали скрипты на страницах, размещённых на Вашем сайте, можно скопировать JAR-файл с Вашего сайта и поместить его на другой сайт. Поскольку сами по себе маркированные скрипты не и...
    Будьте осторожны с тем, что экспортируете
    Когда Вы экспортируете функцию из Вашего маркированного скрипта, Вы фактически передаёте доверительное пользование любому скрипту, вызывающему Вашу функцию. Это означает, что Вы несёте ответственн...
    Минимизация Trusted Code Base
    На жаргоне системы безопасности, trusted code base (TCB) это набор кода, имеющий привилегии для выполнения ограниченных акций. Одним из путей повышения безопасности является уменьшение размера TCB...
    Использование минимума, необходимого для решения задачи
    Другой способ уменьшить возможность проникновения и возникновения ошибок - использовать только необходимый минимум, необходимый для выполнения данного доступа. Например, предыдущий код запрашивал...
    Маркировка скриптов
    В процессе разработки скрипта, который Вы, возможно, промаркируете, Вы можете использовать принципалы кодовой базы для проверки, как описано в разделе "Принципалы Кодовой Базы" . После завершения...
    Использование утилиты Netscape Signing Tool
    После написания скрипта Вы маркируете его с помощью утилиты Netscape Signing Tool. См. Signing Software with Netscape Signing Tool 1.1 ....
    После маркировки
    Если Вы промаркировали скрипт, а затем изменяете его, Вы обязаны повторно маркировать его. Для JavaScript-файлов это означает, что Вы не можете ничего изменять в файле. Для инлайн-скриптов - Вы не...
    Маркированные скрипты. Решение проблем.
    Если Вы промаркировали скрипт, а затем изменяете его, Вы обязаны повторно маркировать его. Для JavaScript-файлов это означает, что Вы не можете ничего изменять в файле. Для инлайн-скриптов - Вы не...
    Ошибки в Java-Консоли
    Проверьте консоль Java на наличие ошибок, если Ваши маркированные скрипты работают не так, как Вы ожидали. Вы можете увидеть такие ошибки: # Error: Invalid Hash of this JAR entry (-7882) # jar fil...
    Отладка ошибок хэша
    Ошибки хэша возникают, если скрипт изменяется после маркировки. Чаще всего причиной этого является то, что скрипты перемещаются с одной платформы на другую в текстовом режиме, а не в бинарном. Пос...
    Исключение "User did not grant...
    В зависимости от того, включили Вы принципалы кодовой базы или нет, Вы увидите различное поведение при попытке скрипта получить привилегии, если он не маркирован или если его принципалы были сокра...
    Использование разрушения данных
    В JavaScript 1.1 имеется возможность, называемая data tainting\разрушение данных , которая остаётся ограничением безопасности той же самой политики одного источника, но предоставляет средство для...
    Как работает разрушение данных
    Автор страницы отвечает за разрушение данных в элементах. В таблице перечислены свойства и методы, которые разрушаются по умолчанию....
    Таблица 14.3 Свойства, разрушаемые по умолчанию
    Объект Разрушенное свойство document cookie, domain, forms, lastModified, links, referrer, title, URL Form action, name любой элемент ввода на форме checked, defaultChecked, defaultValue, name, se...
    Включение разрушения
    Чтобы включить разрушение данных, конечный пользователь устанавливает переменную окружения NS_ENABLE_TAINT таким образом: В Unix используется команда setenv в csh. В Windows используется set в фай...
    Включение и отключение разрушения отдельных элементов данных
    Вы можете разрушать элементы данных (свойства, переменные, функции, объекты) в Ваших скриптах для предотвращения возвращения значений, которые могут использоваться ненадлежащим образом другими скр...
    Разрушение как результат выполнения условных операторов
    В некоторых случаях информация разрушения обслуживается потоком управления, а не потоком данных. Для работы с такими ситуациями каждое окно имеет taint accumulator\аккумулятор разрушения. Аккумуля...

    Самоучитель по Flash MX перейти









Начало        




Книжный магазин