русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Политика общего происхождения


Дата добавления: 2015-07-09; просмотров: 1239; Нарушение авторских прав


 

Политика общего происхождения накладывает ограничения на содержимоеВсемирной паутины, с которым JavaScript_код может взаимодействовать. Обыч_ но эта политика вступает в игру, когда на одной веб_странице располагается не_ сколько фреймов, включающих теги <iframe>, или когда открываются другие ок_ на броузера. В этом случае политика общего происхождения ограничивает воз_ можность JavaScript_кода из одного окна взаимодействовать с другими фреймами или окнами. В частности, сценарий может читать только свойства окон и доку_ ментов, имеющих общее с самим сценарием происхождение (о том, как исполь_ зовать JavaScript для работы с несколькими окнами и фреймами, рассказывает_ ся в разделе 14.8).


 

282 Глава 13. JavaScript в веб*броузерах

Кроме того, политика общего происхождения действует при работе по протоколу HTTP с помощью объекта XMLHttpRequest. Этот объект позволяет JavaScript_сцена_ риям, исполняющимся на стороне клиента, отправлять произвольные HTTP_за_ просы, но только тому веб_серверу, откуда был загружен документ, содержащий сценарий (подробнее об объекте XMLHttpRequest рассказывается в главе 20).

 

Происхождение документа определяется исходя из протокола, хоста и номерапорта для URL_адреса, с которого был загружен документ. Документы, загружа_ емые с других веб_серверов, имеют другое происхождение. Документы, загру_ женные с разных портов одного и того же хоста, также имеют другое происхож_ дение. Наконец, документы, загруженные по протоколу HTTP, по происхожде_ нию отличаются от документов, загруженных по протоколу HTTPS, даже если загружены с одного и того же веб_сервера.

 

Важно понимать, что происхождение самого сценария не имеет никакого отно_ шения к политике общего происхождения: значение имеет происхождение до_ кумента, в который встраивается сценарий. Предположим, что сценарий из до_ мена A включается (с помощью атрибута src тега <script>) в веб_страницу из до_ мена B. Этот сценарий будет иметь полный доступ ко всему содержимому этого документа. Если этот сценарий откроет второе окно и загрузит в него документ из домена B, он также будет иметь полный доступ к содержимому этого второго документа. Но если сценарий откроет третье окно и загрузит в него документ из домена C (или даже из домена A), в дело вступит политика общего происхожде_ ния и ограничит сценарий в доступе к этому документу.



 

Политика общего происхождения на самом деле применяется не ко всем свойст_ вам всех объектов в окне, имеющем другое происхождение, но она применяется ко многим из них, в частности, практически ко всем свойствам объекта Document (подробности см. в главе 15). Кроме того, разные производители броузеров реа_ лизуют эту политику немного по_разному. (Например, броузер Firefox 1.0 допус_ кает вызов метода history.back() из другого окна, а IE 6 – нет.) В любом случае можно считать, что любое окно, содержащее документ, полученный с другого сервера, для ваших сценариев закрыто. Если сценарий открыл такое окно, он может закрыть его, но он никаким способом не может «заглянуть внутрь» окна.

 

Политика общего происхождения необходима для того, чтобы не допустить кра_ жу внутренней информации. Без этого ограничения злонамеренный сценарий (возможно, загруженный в броузер, расположенный в защищенной брандмау_ эром корпоративной сети) мог бы открыть пустое окно, в надежде обмануть пользователя и заставить его задействовать это окно для поиска файлов в ло_ кальной сети. После этого злонамеренный сценарий мог бы прочитать содержи_ мое этого окна и отправить его обратно на свой сервер. Политика общего проис_ хождения предотвращает возможность возникновения такого рода ситуаций.

 

Тем не менее в других ситуациях политика общего происхождения оказывается слишком строгой. Это создает особые проблемы для крупных веб_сайтов, на ко_ торых может функционировать несколько серверов. Например, сценарий с сер_ вера home.example.com мог бы на вполне законных основаниях читать свойства документа, загруженного с developer.example.com, а сценариям с orders.exam' ple.com может потребоваться прочитать свойства из документов с catalog.exam' ple.com. Чтобы поддерживать такие крупные веб_сайты, можно использоватьсвойство domain: объекта Document. По умолчанию свойство domain содержит имя


 

13.8. Безопасность в JavaScript
   

 

сервера, с которого был загружен документ. Это свойство можно установить только равным строке, являющейся допустимым доменным суффиксом перво_ начального значения. Другими словами, если значение domain первоначально было равно строке "home.example.com", то можно установить его равным "examp_ le.com", но не "home.example" или "ample.com". Кроме того, значение свойства do_ main должно содержать, по крайней мере, одну точку, чтобы его нельзя было ус_ тановить равным "com" или другому имени домена верхнего уровня.

 

Если два окна (или фрейма) содержат сценарии, установившие одинаковые зна_ чения свойства domain, политика общего происхождения для этих двух окон ос_ лабляется, и каждое из окон может читать значения свойств другого окна. На_ пример, взаимодействующие сценарии в документах, загруженных с серверов orders.example.com и catalog.example.com, могут установить свойстваdocu_ment.domain равными "example.com", тем самым указывая на общность происхож_ дения документов и разрешая каждому из документов читать свойства другого.

 



<== предыдущая лекция | следующая лекция ==>
Чего не может JavaScript | Взаимодействие с модулями расширения и элементами управления ActiveX


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.