ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Ajax и [без]опасность. Сравнительный обзор и анализ
  #1  
Старый 29.03.2007, 03:21
Аватар для Helios
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме:
1469995

Репутация: 589
Отправить сообщение для Helios с помощью ICQ
По умолчанию Ajax и [без]опасность. Сравнительный обзор и анализ

AJAX и [без]опасность. Сравнительный обзор и анализ

Архитектура web-приложений
В традиционных web-приложениях (не использующих AJAX) основная нагрузка на клиентской стороне ложится на браузер: он и данные от пользователя принимает, и HTTP-запросы отправляет/обрабатывает. JavaScript используется только для простой логики и оптимизации: проверить равенство одинаковых паролей, etc…

Запросы браузера обрабатываются на сервере: внутренняя логистика (PHP, PERL, ASP, ASPX, JSP, etc) проверяет данные пользователя, обрабатывает их (возможно, используя базы данных) и отправляет ответ пользователю.

Схема работы традиционного web-приложения:

http://heliosart.info/images/others/image001.gif

Минусы традиционной структуры:
• Большая пауза между запросом пользователя и ответом сервера
• Традиционные приложения не работают с пользователем на клиентской стороне
Основные факторы, влияющие на задержку:
• Время запроса
• Время ответа
• Ширина канала связи
• Время обработки на сервере

Что такое AJAX?
AJAX (Asynchronous JavaScript and XML, асинхронный JavaScript и XML) – это не какая-то отдельная технология или язык, а принцип разработки интерактивных web-страниц и приложений. Ее датой рождения принято считать 18 февраля 2005 года – день выхода в свет статьи Джесси Джеймса Гарретта «Новый подход к web-приложениям». Технология эта довольно молодая, поэтому освоить ее в полной мере смогли не многие сайты.

Впервые этот принцип начала использовать компания Microsoft, реализовав в своем браузере класс XMLHttpRequest для работы с web-версией Outlook. Затем последовали реализации в браузерах Mozilla, Apple Safari и Opera.

Сейчас технология AJAX применяется на многих сайтах, особенно в этом усердствует компания Google, использующая ее в значительной части своих сервисов. К примеру: gmail.com, maps.google.com, Google Suggest, Google Spell-check.

Архитектура AJAX-приложений
В клиентской части AJAX-приложения главную роль играет JavaScript:
• Отправляет HTTP-запрос
• Производит моментальный отзыв на действия пользователя
• Страница продолжает реагировать на события, действия пользователя
• По событию обрабатывает ответ сервера и манипулирует DOM согласно результату запроса


http://heliosart.info/images/others/image002.gif

Вся технология AJAX основана на объекте XmlHttpRequest, при помощи которого и происходит отправка запроса и получение ответа от сервера.

Вот пример реализации:
Код:
function LoadXMLDoc(url)
{
	req = new XmlHttpRequest();
	req.onreadystatechange = processReqChange;
	req.open('get', url, true);
	req.send(null);
}

function processReqChange()
{
	if(req.readyState == 4)
{
	if(req.readyStatus == 200)
	{
	//process response…
	}
	else
	{
	//handle error…
	}
}
}
Объект XmlHttpRequest позволяет отправлять любые HTTP запросы:
• GET
• POST
• HEAD
• WebDav COPY
• WebDav DELETE

С помощью XmlHttpRequest можно загружать любые типы ресурсов: XML, HTML, простой текст, графику, Flash-ролики, скрипты и другой медиа-контент.

Но есть одно «но»: из соображений безопасности запросы можно отправлять только на тот хост и порт, с которого загружена страница.

Сама технология AJAX безобидна и безопасна, но ее реализация может сделать из нее опасного зверя.

Обзор с точки зрения безопасности
При использовании традиционной схемы построения web-приложений, логика, в основном, работает только на стороне сервера, что очень схоже с простыми консольными приложениями: ввел данные – получил ответ. Команды пользователя отсылаются на сервер:
• Пользователь нажал на кнопку «Оплатить»
• Пользователь отправил сообщение на форум
• Пользователь перешел на страницу с информацией о товаре

Приложение на сервере возвращает целую страницу с ответом.

Атака состоит в отправке специально сформированного запроса:
• Отправка сообщения с HTML-кодом (XSS)
• Загрузка неправильной картинки с целью взлома (загрузка Shell'а)
• Вставка служебных символов в запрос (SQL Injection, php injection, pipe)
• Запрос ресурсов, к которым нет доступа

Методы защиты:
• Проверка всех(!) поступающих данных
• Распределение полномочий в проверке между клиентской и серверной стороной:
клиент – удобство, сервер – безопасность.

Осуществить такую фильтрацию очень просто, так как тип всех вводимых данных известен заранее, допустимые значения известны заранее, количество параметров ограничено и все определяется программистом.

В теории все просто, но что мы видим на практике?
Уязвимости web-приложений на каждом углу. Согласно последним данным, уязвимо 75% всех ресурсов в сети Internet. Большинство сообщений в почтовых рассылках посвящено web-уязвимостям.

При использовании технологии AJAX при построении приложения логистика распределяется между клиентом и сервером. JavaScript реагирует на команды пользователя, делает функциональные запросы к серверу:
• Получить цену для товара
• Получить список городов для заданной области/штата
• Получить последний правильный адрес для пользователя
• Обновить данные о пользователе в базе

В ответ на запрос приходит не целая страница, а только часть ее, которая была запрошена, что приводит к экономии трафика и увеличению скорости загрузки.

При такой реализации взломщик находится ВНУТРИ приложения. Он может узнать имена функций и переменных, параметры функций, их типы и допустимые значения.

Теперь он не ищет среди ограниченного числа параметров те, через которые можно произвести атаку, а исследует API приложения прямо изнутри его.
Также при атаке он может использовать «доверие» серверной части приложения к данным, полученным от клиентской части.

Методы защиты:
Фильтрация данных, полученных из форм. Проверка типов файлов, загружаемых пользователем, особое внимание обратить на графические данные (WMF, многочисленные уязвимости в PNG/JPG).

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

Под конец, пример из реального приложения Microsoft «Atlas» Framework:

Код:
[WebMethod]
public string updatePassword(string custID, string newPassword)
{
	//connect to sql server (strCn defined earlier)
SqlConnection conn = new SqlConnection(strCn);
	//create query
	string q = "UPDATE tblUser SET Password = '" + newPassword + "' WHERE CustomerID = '" + custID + "'";
	SqlCommand cmd = new SqlCommand(q, conn);
	cmd.ExecuteNonQuery();
	
	return "Password updated to " + newPassword;
}
Без комментариев, как говорится…

Последний раз редактировалось Helios; 02.06.2007 в 12:31..
 
Ответить с цитированием

  #2  
Старый 29.03.2007, 11:37
Аватар для Algol
Algol
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме:
2050916

Репутация: 0


По умолчанию

Цитата:
Под конец, пример из реального приложения Microsoft «Atlas» Framework:
Написать глупость можно на любом языке и в любой технологии. Это вовсе не означает что технология плоха. Лично я не вижу особых отличий АЯКСа от обычного WEB, за исключением того, что обновляется не вся страница а только ее часть. Реализовывать же бизнес-логику на стороне клиента - никто не заставляет, она полюбому должна быть на стороне сервере и в web и в AJAX.
 
Ответить с цитированием

  #3  
Старый 29.03.2007, 11:53
Аватар для guest3297
guest3297
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме:
3887520

Репутация: 2996


По умолчанию

Нету информативности.
То что язык осваиваеться знаеют все и на начальной стадии все допускают ошибки.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнительный анализ от Microsoft: Windows Mobile 6 vs Windows Mobile 5 _GaLs_ Схемы и программы 4 19.09.2007 13:57
Ajax LoFFi Чужие Статьи 7 30.01.2007 23:21
Сравнительный обзор программных Dvd плееров _GaLs_ Болталка 3 18.11.2006 17:05



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ