Wiki-учебник Воскресенье, 12.05.2024, 22:45
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

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


JavaScript автоматически предотвращает доступ скриптов одного сервера к свойствам документов на других серверах. Это не даёт скриптам возможность получать закрытую информацию, такую как структура директорий или история пользовательских сессий. В данной главе рассматриваются модели безопасности/security models, имеющиеся в разных релизах JavaScript.

Вот история развития безопасности JavaScript:

  • Во всех релизах политика same origin\одного источника является политикой по умолчанию. Эта политика ограничивает возможность получения и установки свойств, основанных на сервере документов.
  • JavaScript 1.1 использовал data tainting\разрушение данных при доступе к дополнительной информации.
  • JavaScript 1.2 заменил разрушение данных на политику signed script\маркированного скрипта. Эта политика основана на модели безопасности Java под названием object signing\маркировка объекта. Для использования политики маркированного скрипта в JavaScript вы используете специфические классы безопасности Java и маркируете ваши скрипты JavaScript.

1. Политика одного источника


Политика одного источника работает так: при загрузке документа из одного источника, скрипт, загруженный из другого источника, не может получить или установить конкретные свойства конкретного браузера и объектов HTML в окне или фрэйме.

Для обеспечения безопасности, JavaScript определяет источник как подстроку URL, которая содержит protocol://host, где host содержит не обязательный :port. Для иллюстрации, в следующей таблице даны примеры сравнения источника с URL http://company.com/dir/page.html.


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НеудачноРазные протоколы
http://company.com:80/dir/etc.htmlНеудачноРазные порты

В следующей таблице дан список свойств, доступ к которым могут получить только те скрипты, которые прошли проверку на один источник.


Объект


Свойства – субъекты проверки

documentДля чтения и записи: anchors, applets, cookie, domain, embeds, forms, lastModified, length, links, referrer, title, URL, formName (для каждой именованной формы), reflectedJavaClass (для каждого Java-класса, отражённого в JavaScript через LiveConnect).Только для записи: все другие свойства.
formelements
imagelowsrc, src
layersrc
locationВсе, за исключением x и y.
windowfind

1.1. Проверка источника document.domain


Имеется одно исключение из правила одного источника. Скрипт может устанавливать в значение document.domain суффикс текущего домена. Если это сделано, более краткий домен используется для последующих проверок источника. Например, скрипт в документе http://www.company.com/dir/other.html выполняет такой оператор:

document.domain = "company.com";


После этого страница может пройти проверку источника как http://company.com/dir/page.html.

1.2. Проверка источника именованных форм


Именованные формы являются субъектами для проверки источника.

JavaScript 1.1 и более ранние версии. Именованные формы не являются субъектами для проверки источника, хотя массив document.forms – проверяется. Чтобы исключить ошибки безопасности, возникающие при работе скриптов 1.1 в версии 1.2 или более поздней, создайте новую переменную как свойство объекта window, установив именованную форму как значение этой переменной. Вы можете затем иметь доступ к этой переменной (и, следовательно, к форме) через объект window.

1.3. Проверка источника и тэги SCRIPT, загружающие документы


Если вы загружаете документ с любым URL, кроме file:, и этот документ содержит тэг <SCRIPT SRC="...">, внутренний атрибут SRC не может обратиться к другому URL file:.

JavaScript 1.1 и более ранние версии. Если вы загружаете файл JavaScript, используя <SCRIPT SRC="...">, то URL, специфицированный в атрибуте SRC, может быть URL любого типа (file:, http: и т.д.), независимо от типа URL файла, содержащего тэг SCRIPT. Для получения поведения JavaScript 1.1 в JavaScript 1.2 пользователи могут добавить следующую строку в свой файл настроек:

user_pref("javascript.allow.file_src_from_non_file", true);


Соблюдайте осторожность с этой настройкой, поскольку она пробивает брешь в защите. Пользователи могут устанавливать эту настройку, только если они осознаю́т связанный с этим риск.

1.4. Проверка источника и слои


Слой/layer может иметь иной источник, нежели окружающий документ. Проверки источника осуществляются между документами и скриптами в слоях из различных источников. То есть, если документ содержит один или более слоёв, JavaScript проверяет источники этих слоёв, прежде чем они смогут взаимодействовать друг с другом или с документом-родителем.

1.5. Проверка источника и Java-аплеты


Ваша HTML-страница может содержать тэги APPLET для использования аплетов Java. Если тэг APPLET имеет атрибут MAYSCRIPT, этот аплет может использовать JavaScript. В это случае аплет является субъектом проверки источника при вызове JavaScript. Для этих целей источником аплета является URL документа, содержащего тэг APPLET.
Поиск
Календарь
«  Май 2024  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031
Архив записей
Ссылки
  • Официальный блог
  • Сообщество uCoz
  • ВКонтакте
  • Сделать бесплатный сайт с uCoz