JavaScript. Подробное руководство, 6-е издание
Шрифт:
Универсальный способ предотвращения XSS-атак заключается в удалении HTML-тегов из всех данных сомнительного происхождения, прежде чем использовать их для динамического создания содержимого документа. Чтобы исправить эту проблему в показанном ранее файле greet.html, нужно добавить следующую строку в сценарий, которая призвана удалять угловые скобки, окружающие тег
Простейшая операция, представленная выше, заменит в строке все
Метод
Стандарт HTML5 пошел еще дальше по пути развития стратегий защиты и определяет атрибут
Межсайтовый скриптинг представляет собой уязвимость, глубоко уходящую корнями в архитектуру Всемирной паутины. Вы должны осознавать всю глубину этой уязвимости, но дальнейшее ее обсуждение выходит далеко за рамки темы данной книги. В Интернете есть немало ресурсов, которые помогут вам организовать защиту от атак подобного рода. Наиболее важный из них принадлежит группе компьютерной «скорой помощи» CERT Advisory: http://www.cert.org/advi-sorieslCA-2000-02.html.
13.6.5. Атаки типа отказа в обслуживании
Политика общего происхождения и другие меры безопасности прекрасно защищают данные клиента от посягательств со стороны злонамеренного программного кода, но не могут предотвратить атак типа отказа в обслуживании. При посещении злонамеренного веб-сайта ваш броузер может получить JavaScript-сценарий, который в бесконечном цикле вызывает метод alert, выводящий диалоговое окно или нагружающий центральный процессор компьютера бесконечным циклом с бессмысленными вычислениями.
Некоторые типы броузеров автоматически определяют наличие циклов, выводящих диалоговые окна или имеющих продолжительное время работы, и предоставляют пользователю возможность прервать их. Но злонамеренный программный код для обхода этой защиты может использовать прием на основе метода
13.7. Клиентские фреймворки
Многие веб-разработчики считают удобным конструировать свои веб-приложения на основе библиотек клиентских фреймворков. Эти библиотеки являются «основой» в том смысле, что они создают новый, высокоуровневый прикладной интерфейс для клиентских сценариев, действующий поверх стандартного и собственного API веб-броузеров: приняв за основу какой-либо фреймворк, вам остается только использовать определяемый им прикладной интерфейс в своем программном коде. Одним из очевидных преимуществ использования фреймворков является высокоуровневый
В главе 19 мы познакомимся с jQuery - одним из наиболее популярных фреймворков. Если вы решите использовать jQuery в своих проектах, вам все равно желательно прочитать главы, предшествующие главе 19, - понимание низкоуровневых прикладных интерфейсов повысит ваш профессиональный уровень, даже если вам редко придется использовать эти интерфейсы.
Помимо jQuery существует еще множество фреймворков на языке JavaScript - их слишком много, чтобы перечислять здесь. Тем не менее ниже я перечислил некоторые из наиболее известных и широко используемых фреймворков:
Prototype
Как и jQuery, библиотека Prototype основное внимание уделяет работе с DOM и Ajax и добавляет довольно много вспомогательных функций в базовый язык. В дополнение к ней можно добавить библиотеку Scriptaculous , которая реализует анимационные и визуальные эффекты.
Dojo
Dojo - это огромный фреймворк, имеющий «невероятную глубину*. Он включает обширный набор графических элементов пользовательского интерфейса, системный пакет, уровень абстракции данных и многое другое.
YUI
YUI - это библиотека, созданная компанией Yahoo! для внутренних нужд и используемая ею в своих веб-страницах. Подобно Dojo, это большая, всеохватывающая библиотека утилит и функций для работы с DOM, виджетами и т. д. Существует две несовместимые версии, известные как YUI 2 и YUI 3.
Closure
Библиотека Closure (Jittp:Hcode.google.com/closure/library/) - это клиентская библиотека, которую компания Google использует в своих веб-приложениях Gmail, Google Docs и в других. Эта библиотека предназначена для использования совместно с компилятором Closure ^ который удаляет из библиотеки неиспользуемые функции. Благодаря тому, что перед развертыванием веб-приложения из него удаляется весь ненужный программный код, создатели библиотеки Closure избежали необходимости заботиться о ее компактности и добавили в библиотеку Closure обширный набор утилит.
GWT
GWT, Google Web Toolkit , - это совершенно иной тип клиентских фреймворков. Он определяет прикладной интерфейс веб-приложений на языке Java и предоставляет компилятор для преобразования Java-программ в совместимые сценарии на клиентском JavaScript. Фреймворк GWT используется в некоторых программных продуктах компании Google, но не так широко, как библиотека Closure.
14
Объект Window
В главе 13 был представлен объект