
- •12. Создание динамического наполнения страницы. Основы JavaScript
- •12.1. Основы языка JavaScript.
- •12.1.5.12. Внутренние функции
- •12.1.6. Встраивание в веб-страницы
- •12.1.6.1. Расположение внутри тега
- •12.1.6.2. Отделение от разметки
- •12.1.6.3. Вынесение в отдельный файл
- •12.1.6.4. Атрибуты тега script
- •12.1.7. Область применения
- •12.1.7.9. Прикладное программное обеспечение
- •12.1.10.1. Межсайтовые уязвимости
- •12.1.10.2. Ошибки в браузере, плагинах и расширениях
- •12.1.10.3. Ошибки реализации песочницы
- •12.2. Ключевые термины
- •12.3. Краткие итоги
12.1.7.9. Прикладное программное обеспечение
JavaScript используется для написания прикладного ПО. Одним из ярких примеров является Mozilla Firefox, 57 % исходного кода которого написано на JavaScript (для сравнения, следующим языком программирования по объему кодовой базы Firefox является C++, доля которого составляет 17 %).
Google Chrome OS в качестве прикладного ПО использует Веб-приложения.
12.1.7.10. Манипуляция объектами приложений
JavaScript также находит применение в качестве скриптового языка доступа к объектам приложений. Платформа Mozilla (XUL/Gecko) использует JavaScript. Среди сторонних продуктов, например, Java, начиная с версии 6, содержит встроенный интерпретатор JavaScript на базе Rhino. Сценарии JavaScript поддерживаются в таких приложениях Adobe, как Adobe Photoshop, Adobe Dreamweaver, Adobe Illustrator и Adobe InDesign.
12.1.7.11. Офисные приложения
JavaScript используется в офисных приложениях для автоматизации рутинных действий, написания для написания макросов, организации доступа со стороны Веб-служб.
12.1.8. Библиотеки JavaScript
Для обеспечения высокого уровня абстракции и достижения приемлемой степени кросс-браузерности при разработке веб-приложений используются библиотеки JavaScript. Они представляют собой набор многократно используемых объектов и функций.
Среди известных JavaScript библиотек можно отметить Adobe life, Dojo Toolkit, ExtJS, jQuery, Mootools, Prototype, Qooxdoo [9, 10, 11, 12]. Некоторые из этих библиотек будут рассмотрены в следующей лекции.
12.1.9. Поддержка браузерами
На сегодняшний день поддержку JavaScript обеспечивают современные версии всех наиболее часто используемых браузеров. В Internet Explorer, Mozilla Firefox, Safari, Chrome, Opera имеется полная поддержка третьей редакции ECMA-262. При этом в Mozilla Firefox предпринята попытка осуществления поддержки четвертой редакции спецификации, а первым браузером, в котором появилась неполная поддержка спецификации 3.1, явился Internet Explorer 8.
12.1.10. Безопасность
JavaScript позволяет потенциальным авторам вредоносного кода запускать его на любом компьютере сети: для этого достаточно открыть на нем Веб-страницу. Это обуславливает наличие двух принципиальных ограничений:
JavaScript-программы выполняются в песочнице (sandbox), в которой они могут выполнять только ограниченный круг действий, а не задачи программирования общего назначения (например, создание файлов, работа с сокетами);
для JavaScript-кода применяется политика общего происхождения, в соответствии с которой скрипт, встроенный в страницу не может получить доступ к ряду свойств объектов другой страницы (в частности, к большинству свойств объекта document) при отличии в протоколе, хосте и номере порта этих страниц.
Помимо этого, разработчики браузеров вносят дополнительные ограничения в ответ на имеющие место злоупотребления. Так появился, в частности, запрет на открытие окна, размер одной стороны которого меньше ста пиксел.
12.1.10.1. Межсайтовые уязвимости
Общая проблема, касающаяся JavaScript – межсайтовый скриптинг или XSS, нарушение политики общего происхождения. Уязвимости XSS имеют место в ситуациях, когда злоумышленник имеет возможность поместить скрипт на страницу, демонстрирующуюся пользователю. В этом случае скрипт получает доступ к сайту с правами этого пользователя, что в ряде случаев открывает возможность отсылки конфиденциальной информации, осуществление нежелательных транзакций.
Уязвимости XSS также происходят из-за ошибок, допущенных разработчиками браузеров.
Другим типом межсайтовой уязвимости является подделка межсайтовых запросов или CSRF. Она заключается в возможности сайта злоумышленника заставить браузер пользователя осуществить нежелательное действие на целевом сайте (например, банковский перевод денег). Такая возможность имеется, если целевой сайт полагается только на HTTP cookie или запросы авторизации. В этом случае запросы, инициализированные кодом сайта злоумышленника, выполняются так же как запросы пользователя, если он авторизован на целевом сайте. Одним из средств защиты от CSRF является осуществление аутентификации при любом запросе, который приводит к необратимым последствиям.