Статистика |
Онлайн всего: 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).Только для записи: все другие свойства. | form | elements | image | lowsrc, src | layer | src | location | Все, за исключением x и y. | window | find |
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 » | Пн | Вт | Ср | Чт | Пт | Сб | Вс | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
|
|