Современные
информационные технологии/4.Информационная безопасность
Погребицкий И.В.
Руководитель: Тимофеев Д.С.
Национальный горный университет, Днепропетровск, Украина
Безопасность Ajax-приложений
В настоящее время набирает популярность новый
подход к разработке веб-приложений, называемый Ajax. При использовании
Ajax страницы веб-приложения не перезагружаются целиком, а лишь догружают
необходимые данные с сервера, что делает их более интерактивными и
производительными.
AJAX
(от англ. Asynchronous Javascript and XML —
«асинхронный JavaScript и XML») — подход к построению
интерактивных пользовательских интерфейсов веб-приложений,
заключающийся в «фоновом» обмене
данными браузера с веб-сервером. В результате, при обновлении
данных веб-страница не перезагружается полностью и веб-приложения
становятся более быстрыми и удобными.
AJAX — не одна конкретная технология, скорее это
совокупность четырех технологий:
JavaScript — это язык сценариев общего
назначения, предназначенный для включения кода в Web-приложение. Интерпретатор
JavaScript в составе Web-браузера обеспечивает взаимодействие со встроенными
средствами браузера. Данный язык используется для создания Ajax-приложений.
CSS (Cascading Style Sheets) - CSS
предоставляет возможность определять стили элементов Web-страницы. С помощью
данной технологии можно без труда обеспечить согласованность внешнего вида
компонентов приложения. В Ajax CSS используется для изменения
редставления интерфейса в процессе интерактивного взаимодействия.
DOM (Document Object Model) - DOM представляет
структуру Web-страницы в виде набора объектов, которые можно обрабатывать
средствами JavaScript. Это дает возможность изменять внешний вид интерфейса
Ajax-приложения в процессе работы.
XMLHttpRequest - Объект XMLHttpRequest позволяет
программисту получать данные с Web-сервера в фоновом режиме. Как правило,
озвращаемая информация предоставляется в формате XML, но данный объект
позволяет также работать с любыми текстовыми данными. Несмотря на то что
XMLHttpRequest является наиболее гибким из всех инструментов общего назначения,
позволяющих решать подобные задачи, существуют и другие способы получения
данных с сервера.
Распространение технологии AJAX в
современном Интернете влечёт за собой появление дополнительных направлений
атак. Атакующий может внедрить собственный код клиентской стороны, чтобы
целиком перехватить коммуникацию между клиентом и сервером. По сути, AJAX—новый
прозрачный слой во взаимодействии клиента и сервера, не контроллируемый
пользователем. Приложения, основанные на AJAX, подвергаются тем же рискам, что
и стандартные веб-приложения, но более сложным в выявлении из-за усложнениях
архитектуры. Во время разработки важно уделять внимание аспектам безопасности,
фокусируясь не только на необходимых бизнес-возможностях приложения, но и на их
надёжной и безошибочной реализации. Возросшая сложность программного окружения
может заставить разработчиков не уделять внимание аспектам безопасности и
сокращать процесс тестирования. Частая ошибка заключается в рассматривании AJAX-запросов
как невыполнимых за пределами веб-приложения. Не стоит забывать, что AJAX
основан на протоколе HTTP и для злоумышленника является возможным
использования всех атак, связанных с самим протоколом HTTP (сообщения по
которому обычно передаются в открытом виде, хотя механизмы шифрования, такие
как TLS, получают всё большую распространённость).
Проблемы AJAX касаются как клиентской, так и
серверной стороны, и в общем могут быть отнесены к следующим категориям:
Системная архитектура
Авторизация и аутентификация
Коммуникация между клиентом и сервером
XSS (англ. Сross Site Sсriрting —
«межсайтовый скриптинг») — тип уязвимости интерактивных
информационных систем в вебе. XSS возникает, когда в генерируемые сервером
страницы по какой-то причине попадают пользовательские скрипты. Специфика
подобных атак заключается в том, что вместо непосредственной атаки сервера они
используют уязвимый сервер в качестве средства атаки на клиента.
Иногда для термина используют сокращение «CSS»,
но чтобы не было путаницы с каскадными таблицами стилей, используют
сокращение «XSS».
Сейчас XSS составляют около 15 % всех
обнаруженных уязвимостей. Долгое время программисты не уделяли им должного
внимания, считая их неопасными. Однако это мнение ошибочно: на странице или
в HTTP-Cookie могут быть весьма уязвимые данные (например,
идентификатор сессии администратора). На популярном сайте скрипт может
устроить DoS-атакy.
XSRF (англ. Сross Site Request
Forgery — «Подделка межсайтовых запросов») — вид атак на
посетителей веб-сайтов, использующий недостатки протокола HTTP.
Суть атаки состоит в посылании AJAX или HTTP
запроса со страницы сайта злоумышленника к веб-приложению, в котором сессия
пользователя всё ещё активна. Например, может быть использован следующий код
для выполнения вредноносного HTTP запроса:
<img
src="http://bank.com/account/destroy">
Запрос будет выполнен с отправлением Cookie
пользователя, таким образом, будет выполнен веб-приложением как валидный запрос
пользователя. Злоумышленник может выполнять таким образом произвольные запросы.
Если жертва заходит на сайт, созданный
злоумышленником, от её лица тайно отправляется запрос на другой сервер
(например, на сервер платёжной системы), осуществляющий некую вредоносную
операцию (например, перевод денег на счёт злоумышленника). Для осуществления
данной атаки, жертва должна быть авторизована на том сервере, на
который отправляется запрос, и этот запрос не должен требовать какого-либо
подтверждения со стороны пользователя, который не может быть проигнорирован или
подделан атакующим скриптом.
Одно из применений XSRF — эксплуатация
пассивных XSS, обнаруженных на другом сервере. Так же возможны отправка
писем от лица жертвы и изменение настроек учётных записей на других сайтах
(например, секретного вопроса для восстановления пароля).
При разработке динамических веб-приложений
следует руководствоваться международными стандартами в области веб-разработки,
равно как и общими соображениями безопасности, что может значительно уменьшить
или устранить риск атаки.
Литература:
Маклафин Б. Изучаем Ajax – Питер, 2008
Крейн Д., Паскарелло Э., Джеймс Д. Ajax в
действии – Питер, 2007.
Закас Н., Мак-Пик Д. Ajax для
профессионалов – Вильямс, 2008.