Практические аспекты сетевой безопасности Основы веб-технологий.

Презентация:



Advertisements
Похожие презентации
ПРОТОКОЛЫ HTTP. HTTP - HyperText Transfer Protocol Протокол уровня приложений Текущая версия HTTP/1.1.
Advertisements

Web-программирование По материалам курса University of Washington
Лекция Тема: «Средства создания серверного программного обеспечения» Преподаватель: Халелова Е.Н.
1 Лекция Протокол HTTP – основной транспорт Web. 2 Приложения, использующие HTTP u Клиентские (браузеры): »MS Internet Explorer »Netscape Communicator.
Hypertext Transfer Protocol (HTTP) Протокол передачи гипертекста.
Материалы взяты из википедии. HTTP HTTP (англ. HyperText Transfer Protocol «протокол передачи гипертекста»)англ. гипертекста.
Тема 4 Организация доступа к ресурсам портала 1. Базовая аутентификация пользователей 2. Автоматическая регистрация и аутентификация пользователей 3. Аутентификация.
1 Учебный курс Основы Web-технологий Лекция 6 CGI и Perl. SSI и Cookies кандидат технических наук Павел Брониславович Храмцов
HTTP Hypertext Transfer Protocol среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря.
Лекция 2 Программирование на стороне сервера: Протокол HTTP. CGI. Передача параметров серверу. Запоминание состояния. Меры безопасности. CGI и базы данных.
Web-узлы. Разработка и администрирование.. Часть 1. Web-технология.
Лекция 5 WWW (World Wide Web) – всемирная паутина 2 3 основные идеи: 1.язык разметки / гипертекст (xHTML) 2.универсальная идентификация ресурсов (URL)
Разгони свой сайт Лекция 5: Параллельные загрузки Мациевский Николай 1 / 27 webo.in.
WEB- ТЕХНОЛОГИИ Лекция 1. WEB- ПРИЛОЖЕНИЯ 1 Особый тип программ, построенных по архитектуре « клиент - сервер » Основа получение запросов от пользователя.
Протоколы Internet. Службы Internet. HTTP-Сервер..
1 Учебный курс Введение в JavaScript и CGI Лекция 5 Основы CGI кандидат технических наук Павел Брониславович Храмцов
Лекция 11 Тема «Формы » Преподаватель: Халелова Е.Н.
Проф. В.К.Толстых, Выполнил студент: Тышлек С.В., 2009 Технологии разработки Internet- приложений Из цикла лекций «Технологии разработки.
Лектор - проф. Росляков А.В.1 РАЗДЕЛ 2 СОВРЕМЕННЫЕ СЕТИ СВЯЗИ ЛЕКЦИЯ 15 ПРОТОКОЛ SIP. БАЗОВЫЕ ПРИНЦИПЫ Курс «Сети связи»
Что сайту известно о нас? Почти всё!. Cookies Ку́ки (слово не склоняется; от англ. cookie печенье) небольшой фрагмент данных, созданный веб- сервером.
Транксрипт:

Практические аспекты сетевой безопасности Основы веб-технологий

Состав веб-технологий Протоколы HTTP/HTTPS SOAP/JSON/XML-RPC и пр. На стороне сервера технологии построения распределенных ИС На стороне клиента HTML4, HTML5 CSS DOM JavaScript, AJAX

Протокол HTTP Текстовый; версии: 0.9, 1.0 и 1.1 HTTP-запрос метод, URL ресурса, версия протокола заголовки (опционально) тело запроса HTTP-ответ версия, код и статус ответа заголовки тело ответа

POST /wp-includes/charts/flot-stats-data.php HTTP/1.1 User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X ; U; en) Host: andrepetukhov.wordpress.com Referer: Cookie: wp-settings-time = Content-Type: application/x-www-form-urlencoded Content-Length: 139 height=260&page=estats&chart_type=stats-data&target=stat- chart&width=555&blog= &unit=1&noheader=1&site=false& num=15&syn HTTP-запрос

Методы в протоколе HTTP GET, HEAD POST OPTIONS, TRACE PUT, DELETE Safe methods idempotent methods

URL (1 из 2) server dns-имя (localhost, lvk.cs.msu.su, президент.рф) как будет выглядеть президент.рф в HTTP-запросе? IP-адрес ( , или bin или hex) опционально – порт (service.nalog.ru:8080) Превращается браузером в: GET /path/program?query Host: server

URL (2 из 2) секции program, query и fragment – optional пример: path – путь (логический) к файлу программы query – аргументы для программы fragment вообще не передается на сервер URL-кодирование разрешенные символы: [A-Za-z0-9] и., -, ~, _ пробел кодируется + все остальные символы кодируются %xx, где xx – код символа в кодировке UTF-8

Заголовки HTTP-запросов User-Agent User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X ; U; en) Referer Referer: Cookie Cookie: JSESSIONID=316A5CE41D3F370466D2F8C4D Authorization Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== Content-Length Content-Length: 82 Content-Type Content-Type: application/x-www-form-urlencoded

Вопросы для самостоятельного исследования (часть 1) что придет в программу в качестве значения key1: val1, val2 или оба? Дан запрос: POST /path/program?key1=val1 Host: server Content-Length: 9 key1=val2 что придет в программу в качестве значения key1: val1, val2 или оба? Как можно использовать полученные факты?

HTTP-ответ HTTP/ OK Last-Modified: Mon, 11 Oct :20:16 GMT ETag: "c135d73798bc4bc5aad6d1aa4a8aa073 Accept-Ranges: bytes Content-Type: application/xml Content-Length: 78 Server: nginx/ Date: Sun, 03 Apr :59:11 GMT Connection: keep-alive

Коды ответов (1 из 2) 1xx – информационные 100 Continue В запросе должно быть Expect: 100-continue 2xx – успех 200 Ok 3xx – перенаправление 301 Moved Permanently 302 Found 303 See Other 304 Not Modified 307 Temporary Redirect

Коды ответов (2 из 2) 4xx - ошибка со стороны клиента 400 Bad Request 401 Unauthorized В ответе должен быть проставлен WWW-Authenticate 403 Forbidden 404 Not Found 405 Method Not Allowed 5xx – ошибка со стороны сервера 500 Internal Server Error 501 Not Implemented 502 Bad Gateway 503 Service Unavailable

Заголовки HTTP-ответов Server Server: nginx/ Content-Length (Content-Length: 78) Content-Type Content-Type: text/html; charset=UTF-8 Location Location: Set-Cookie Set-Cookie: UID=2b7681f; expires=Tue, 02-Apr :59:11 GMT; path=/; domain=.scorecardresearch.com WWW-Authenticate WWW-Authenticate: Basic

HTTP 1.0 и 1.1: основные отличия Persistent connections Chunked transfer encoding Caching (ETag) Host header Digest auth Cookies

Вопросы для самостоятельного исследования (часть 2) Передать в запросе два одноименных заголовка с разными значениями какой заголовок будет доступен программе: первый, второй или оба? проверить на Content-Length и Cookies Передать в заголовке cookies два одноименных ключа с разными значениями какое значение будет доступно программе: первое, второе или оба? Передать два заголовка cookies с разными путями - / и /path, но с одноименными ключами какое значение будет доступно программе: первое, второе или оба? Как можно использовать полученные факты?

Инструменты Burp Suite Firefox c расширениями: FoxyProxy FireBug TamperData Можно поставить еще прокси для просмотра HTTP-трафика – например, WebScarab Browser -> Burp Suite -> Logging Proxy -> Web App

Хостинг Workflow веб-сервера Как на одном узле развернуть несколько сайтов? Как передать программе входные данные и получить ответ? CGI REQUEST_METHOD, PATH_INFO, QUERY_STRING, REMOTE_ADDR Модули сервера Как решить задачу масштабирования и балансировки нагрузки? Хостинг и HTTPS

Прокси-серверы Прямые прокси и gateway открытые и анонимные прокси прозрачные прокси самостоятельное исследование: как обнаружить? Обратные (reverse) прокси Задачи кэширование, балансировка нагрузки централизованный контроль access control, DLP, AUP, проверка на malware и пр. биллинг и протоколирование шифрование/дешифрование, аутентификация

Схема работы модуля типичного веб-приложения

Технологии на стороне клиента HTML4, HTML5 CSS DOM JavaScript, AJAX Java-апплеты, ActiveX, Flash, Silverlight История и логика возникновения отделение контента от представления и от логики борьба за интерактивность same origin policy

Same origin policy РесурсSOPКомментарии хоста хоста хоста

Same origin policy в JavaScript Window boundary SOP не позволит скрипту, загруженному с в одном окне манипулировать документом с Frame boundary SOP не позволит скрипту, загруженному с в одном фрейме манипулировать фреймом с Embedded scripts скрипт, внедренный в страницу через, будет считаться скриптом c домена Images & CSS картинки и таблицы стилей, загруженные со сторонних ресурсов, все равно считаются частью документа и становятся доступными JS

Вопросы для самостоятельного исследования (часть 3) HTML-документ открывается локально (double- click по файлу) можно ли из этого документа считывать локальные файлы с помощью схемы file:// ? Попробуйте осуществить кросс-доменный XMLHttpRequest из-под разных браузеров; опишите увиденную реакцию Чем отличается Same Origin Policy для JavaScript от Same Origin Policy для Java-апплетов? Найдите и опишите как можно больше способов сделать кросс-доменные запросы

Способы сделать HTTP-запрос Автоматически,,,, события JS С помощью пользователя ссылки Нажми меня! формы

Вопросы для самостоятельного исследования (часть 4) Какой запрос сформирует браузер, если: в теге не указать атрибут action? в теге не указать атрибут method? указать пустое имя параметра в поле типа text? не указать атрибут name в поле типа text? у кнопки submit не указать атрибут value? Как можно отправить форму без кнопки submit? Реализуйте HTTP-запрос из таблицы CSS-стилей Реализуйте XMLHttpRequest, который должен посылаться в результате обработки события onerror в теге

Способы реализации сеансов По IP-адресу HTTP-аутентификация URL-overwriting Скрытые поля форм + PostBack Cookies Ответ с домена docs.foo.com: Set-Cookie: LSID=DQAAAK…Eaem_vYg; Path=/accounts; Expires=Wed, 13-Jan :23:01 GMT; Secure; HttpOnly Set-Cookie: HSID=AYQEVn….DKrdst; Domain=.foo.com; Path=/; Expires=Wed, 13-Jan :23:01 GMT; HttpOnly Set-Cookie: SSID=Ap4P….GTEq; Domain=.foo.com; Path=/; Expires=Wed, 13-Jan :23:01 GMT; Secure; HttpOnly … ?

Вопросы?