stanfy madcode meetup: Анализ и модификация http запросов для...

21

Upload: stanfy

Post on 13-Jul-2015

113 views

Category:

Mobile


7 download

TRANSCRIPT

Page 1: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений
Page 2: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

Stanfy MadCode Meetup:

Анализ и модификация HTTP запросов для тестирования мобильных приложений

Олег Никифоров QA @ Stanfy

Page 3: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

План вебинара •  Что такое снифферы, плюсы и минусы использования

•  Why bother? или чем работа с трафиком может помочь?

•  Client vs Cloud sniffers •  HTTP - виды запросов и их структура •  HTTP vs HTTPS •  Виды ошибок •  Работа со сниффером (на примере Burp Suite)

Page 4: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

Что такое снифферы и для чего их применять

Сниффер - программа для перехвата и логирования трафика проходящего внутри сети.

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

Page 5: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

Минусы использования (на примере Burp Suite)

•  Невозможность использовать сервисы по типу AppStore (свой сертификат)

•  Если не выключить прокси когда выключен сниффер – запросы не будут работать (фон)

•  Увеличивается время на операцию запрос – ответ

Page 6: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

Плюсы использования

•  Возможность эмулировать тайм-ауты соединения

•  Возможность эмулировать серверные ошибки

•  Возможность манипулировать данными как в запросе, так и в ответе

Page 7: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

Why Bother?

•  Как может помочь (positive) •  Что можно проверять (negative)  

Page 8: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

Как может помочь (positive)

•  подменить id пользователя/айтема в запросе чтобы получить другие данные в ответе

•  изменить user status на лету: free/paid, approved/not approved

•  подмена контента в запросе (значения параметров)

•  подмена контента в ответе (значения параметров, ссылки на медиа файлы (фото, аудио, видео))

Page 9: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

Что можно проверять (negative)

Вызов серверных ошибок для проверки их обработки на клиенте: •  пустые required fields, •  ошибочные данные, •  неверный токен авторизации

Вызов ошибок в аппе путем подмены ответа от сервера: •  пустые параметры в ответе, •  невалидные значения (string вместо int и т.д.), •  невалидная структура ответа

Page 10: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

Client vs Cloud sniffers

•  Burp suite (client): + много возможностей + гибкие настройки -  условно бесплатный

•  Runscope (cloud): + не надо включать прокси на всем девайсе + перехват по url + перехват без ведома пользователя ;) - бесплатный пакет сильно лимитирован в запросах - для вкл / выкл надо менять исходники приложения

Page 11: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

Типы HTTP запросов (REST)

GET/POST/PUT/DELETE GET: •  предназначен для запроса данных •  query в url POST: •  предназначен для отсылки данных •  query в body

Page 12: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

Структура запроса - Headers

Headers - параметры которые описывают клиент- серверное взаимодействие (кодировка, кэширование, тип контента, и т.д.): •  Cookie / Auth Token / etc. – идентификатор сессии •  User-Agent - описание девайса, ОС, версии аппа, etc. •  Accept - ожидаемый нами формат контента (json, xml)

Кроме того, идентификатор сессии может быть вынесен в

уникальный параметр и передаваться в url

Page 13: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

Структура  запроса  -­‐  Body  

 Body  -­‐  тело  запроса,  содержит  передаваемую  нами  инфу      Тут  будет  перечень  всех  параметров  которые  мы  

отсылаем  на  сервер  в  POST  запросе,  плюс  любой  загружаемый  контент  (изображение,  аудио/видео  файл)  

Page 14: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

Структура  ответа  

HTTP  Status  Code  -­‐  код  и  краткое  сообщение,  которые  показывают  статус  взаимодействия  (e.g.  200  OK)  

Headers  -­‐  параметры  которые  описывают  ответ  (дата,  тип  контента,  и  т.д.):  •  Content-­‐Type  •  Set-­‐Cookie  

Body  -­‐  тело  ответа,  содержит  передаваемую  нам  инфу  

Page 15: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

HTTP  vs  HTTPS  

Page 16: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

HTTP Status codes

2** - успешный запрос

•  200 OK

3** - переопределение на другой url

•  304 Not Modified

4** - ошибка на клиенте

•  400 Bad Request

•  401 Unauthorized

5** - ошибка на сервере

•  500 Internal Server Error

Page 17: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

Примеры ошибок

HTTP/1.1 200 OK Connection: Keep-Alive Content-Length: 112 Content-Type: application/json { "status" : "FAILURE", "message" : "Failure", "code" : 4, "description" : "Unidentified system error" }

HTTP/1.1 200 OK Connection: Keep-Alive Content-Length: 112 Content-Type: application/json { "action": "SomeAction", "resultCode": "0", "errorCode": "10", "errorString": "Duplicate confirmation code error", "queryString": null }

Page 18: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

HTTP/1.1 403 Forbidden Date: Tue, 09 Dec 2014 09:48:08 GMT Content-Type: application/json;charset=utf-8 Content-Length: 30 {"fail":"Unauthorized Access"} HTTP/1.1 400 Bad Request Date: Tue, 09 Dec 2014 09:49:04 GMT Content-Type: application/json;charset=utf-8 Content-Length: 27 {"fail":"Invalid Argument"} HTTP/1.1 401 UNAUTHORIZED Server: nginx/1.7.7 Date: Tue, 09 Dec 2014 10:24:53 GMT Content-Type: text/html; charset=utf-8 Content-Length: 258 Set-Cookie: devicesession=.eJyrVorPTFGyqlZSSFKyUvJ1ycnxrQLCrFCDqNygbD8jv8zIXF8jIN8oyiWwIio; HttpOnly; Path=/ {"error": "The server could not verify that you are authorized to access the URL requested", "name": "Unauthorized"}

Page 19: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

Party time Mindie - приложение для снятия и шаринга коротких видеороликов с наложением музыки и разных эффектов Почему Mindie? - Есть фид, есть новости, есть профиль

Page 20: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений
Page 21: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений

Feedback

navisnobilite

[email protected]

#MadCode