MadCode Meetup is a monthly webinar held by Stanfy Team for knowledge sharing about mobile development.
This time Oleg Nikiforov, QA Engineer at Stanfy, shared his experience about using sniffers — computer programs that can intercept and log traffic passing over a digital network for testing client-server communications in mobile applications.
Key points:
1. HTTP vs HTTPS.
2. Types of mistakes.
3. Work with Sniffers (on example of Burp Suite).
Watch the full video (rus): https://www.youtube.com/watch?v=YyQCI-k3z3o&feature=youtu.be
Read the article about Sniffers: https://stanfy.com/blog/madcode-meetup-sniffers/
Join our MadCode group on FB (rus): https://www.facebook.com/MadCodeMeetup/
Watch more videos from MadCode Meetups (rus): https://www.youtube.com/playlist?list=PLrplqd3YJvBvUygFkx4Xvx1p3zyiCgB9Q
Stanfy Publications: Successful Cases of Mobile Technology in Medical Industry
Stanfy MadCode Meetup #2: Sniffers
1.
2. Stanfy MadCode Meetup:
Анализ и модификация HTTP
запросов для тестирования
мобильных приложений
Олег Никифоров
QA @ Stanfy
3. План вебинара
• Что такое снифферы, плюсы и минусы
использования
• Why bother? или чем работа с трафиком может
помочь?
• Client vs Cloud sniffers
• HTTP - виды запросов и их структура
• HTTP vs HTTPS
• Виды ошибок
• Работа со сниффером (на примере Burp Suite)
4. Что такое снифферы и для
чего их применять
Сниффер - программа для перехвата и
логирования трафика проходящего внутри
сети.
При тестировании приложений, в том
числе и мобильных, снифферы
применяются для просмотра и подмены
запросов-ответов между клиентом и
сервером.
5. Минусы использования (на
примере Burp Suite)
• Невозможность
использовать сервисы по
типу AppStore (свой
сертификат)
• Если не выключить прокси
когда выключен сниффер –
запросы не будут работать
(фон)
• Увеличивается время на
операцию запрос – ответ
6. Плюсы использования
• Возможность
эмулировать тайм-ауты
соединения
• Возможность
эмулировать серверные
ошибки
• Возможность
манипулировать
данными как в запросе,
так и в ответе
7. Why Bother?
• Как может помочь (positive)
• Что можно проверять (negative)
8. Как может помочь (positive)
• подменить id пользователя/айтема в запросе
чтобы получить другие данные в ответе
• изменить user status на лету: free/paid, approved/
not approved
• подмена контента в запросе (значения
параметров)
• подмена контента в ответе (значения
параметров, ссылки на медиа файлы (фото,
аудио, видео))
9. Что можно проверять
(negative)
Вызов серверных ошибок для проверки их
обработки на клиенте:
• пустые required fields,
• ошибочные данные,
• неверный токен авторизации
Вызов ошибок в аппе путем подмены ответа от
сервера:
• пустые параметры в ответе,
• невалидные значения (string вместо int и т.д.),
• невалидная структура ответа
10. Client vs Cloud sniffers
• Burp suite (client):
+ много возможностей
+ гибкие настройки
- условно бесплатный
• Runscope (cloud):
+ не надо включать прокси на всем девайсе
+ перехват по url
+ перехват без ведома пользователя ;)
- бесплатный пакет сильно лимитирован в запросах
- для вкл / выкл надо менять исходники приложения
11. Типы HTTP запросов (REST)
GET/POST/PUT/DELETE
GET:
• предназначен для запроса данных
• query в url
POST:
• предназначен для отсылки данных
• query в body
12. Структура запроса - Headers
Headers - параметры которые описывают клиент-
серверное взаимодействие (кодировка, кэширование, тип
контента, и т.д.):
• Cookie / Auth Token / etc. – идентификатор сессии
• User-Agent - описание девайса, ОС, версии аппа, etc.
• Accept - ожидаемый нами формат контента (json, xml)
Кроме того, идентификатор сессии может быть вынесен в
уникальный параметр и передаваться в url
13. Структура
запроса
-‐
Body
Body
-‐
тело
запроса,
содержит
передаваемую
нами
инфу
Тут
будет
перечень
всех
параметров
которые
мы
отсылаем
на
сервер
в
POST
запросе,
плюс
любой
загружаемый
контент
(изображение,
аудио/видео
файл)
14. Структура
ответа
HTTP
Status
Code
-‐
код
и
краткое
сообщение,
которые
показывают
статус
взаимодействия
(e.g.
200
OK)
Headers
-‐
параметры
которые
описывают
ответ
(дата,
тип
контента,
и
т.д.):
• Content-‐Type
• Set-‐Cookie
Body
-‐
тело
ответа,
содержит
передаваемую
нам
инфу
16. HTTP Status codes
2** - успешный запрос
• 200 OK
3** - переопределение на другой url
• 304 Not Modified
4** - ошибка на клиенте
• 400 Bad Request
• 401 Unauthorized
5** - ошибка на сервере
• 500 Internal Server Error
18. 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"}
19. Party time
Mindie - приложение для снятия и
шаринга коротких видеороликов с
наложением музыки и разных эффектов
Почему Mindie? - Есть фид, есть новости,
есть профиль