stanfy madcode meetup: Анализ и модификация http запросов для...
TRANSCRIPT
![Page 1: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/1.jpg)
![Page 2: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/2.jpg)
Stanfy MadCode Meetup:
Анализ и модификация HTTP запросов для тестирования мобильных приложений
Олег Никифоров QA @ Stanfy
![Page 3: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/3.jpg)
План вебинара • Что такое снифферы, плюсы и минусы использования
• Why bother? или чем работа с трафиком может помочь?
• Client vs Cloud sniffers • HTTP - виды запросов и их структура • HTTP vs HTTPS • Виды ошибок • Работа со сниффером (на примере Burp Suite)
![Page 4: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/4.jpg)
Что такое снифферы и для чего их применять
Сниффер - программа для перехвата и логирования трафика проходящего внутри сети.
При тестировании приложений, в том числе и мобильных, снифферы применяются для просмотра и подмены запросов-ответов между клиентом и сервером.
![Page 5: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/5.jpg)
Минусы использования (на примере Burp Suite)
• Невозможность использовать сервисы по типу AppStore (свой сертификат)
• Если не выключить прокси когда выключен сниффер – запросы не будут работать (фон)
• Увеличивается время на операцию запрос – ответ
![Page 6: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/6.jpg)
Плюсы использования
• Возможность эмулировать тайм-ауты соединения
• Возможность эмулировать серверные ошибки
• Возможность манипулировать данными как в запросе, так и в ответе
![Page 7: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/7.jpg)
Why Bother?
• Как может помочь (positive) • Что можно проверять (negative)
![Page 8: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/8.jpg)
Как может помочь (positive)
• подменить id пользователя/айтема в запросе чтобы получить другие данные в ответе
• изменить user status на лету: free/paid, approved/not approved
• подмена контента в запросе (значения параметров)
• подмена контента в ответе (значения параметров, ссылки на медиа файлы (фото, аудио, видео))
![Page 9: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/9.jpg)
Что можно проверять (negative)
Вызов серверных ошибок для проверки их обработки на клиенте: • пустые required fields, • ошибочные данные, • неверный токен авторизации
Вызов ошибок в аппе путем подмены ответа от сервера: • пустые параметры в ответе, • невалидные значения (string вместо int и т.д.), • невалидная структура ответа
![Page 10: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/10.jpg)
Client vs Cloud sniffers
• Burp suite (client): + много возможностей + гибкие настройки - условно бесплатный
• Runscope (cloud): + не надо включать прокси на всем девайсе + перехват по url + перехват без ведома пользователя ;) - бесплатный пакет сильно лимитирован в запросах - для вкл / выкл надо менять исходники приложения
![Page 11: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/11.jpg)
Типы HTTP запросов (REST)
GET/POST/PUT/DELETE GET: • предназначен для запроса данных • query в url POST: • предназначен для отсылки данных • query в body
![Page 12: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/12.jpg)
Структура запроса - Headers
Headers - параметры которые описывают клиент- серверное взаимодействие (кодировка, кэширование, тип контента, и т.д.): • Cookie / Auth Token / etc. – идентификатор сессии • User-Agent - описание девайса, ОС, версии аппа, etc. • Accept - ожидаемый нами формат контента (json, xml)
Кроме того, идентификатор сессии может быть вынесен в
уникальный параметр и передаваться в url
![Page 13: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/13.jpg)
Структура запроса -‐ Body
Body -‐ тело запроса, содержит передаваемую нами инфу Тут будет перечень всех параметров которые мы
отсылаем на сервер в POST запросе, плюс любой загружаемый контент (изображение, аудио/видео файл)
![Page 14: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/14.jpg)
Структура ответа
HTTP Status Code -‐ код и краткое сообщение, которые показывают статус взаимодействия (e.g. 200 OK)
Headers -‐ параметры которые описывают ответ (дата, тип контента, и т.д.): • Content-‐Type • Set-‐Cookie
Body -‐ тело ответа, содержит передаваемую нам инфу
![Page 15: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/15.jpg)
HTTP vs HTTPS
![Page 16: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/16.jpg)
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 запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/17.jpg)
Примеры ошибок
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 запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/18.jpg)
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 запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/19.jpg)
Party time Mindie - приложение для снятия и шаринга коротких видеороликов с наложением музыки и разных эффектов Почему Mindie? - Есть фид, есть новости, есть профиль
![Page 20: Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений](https://reader030.vdocuments.net/reader030/viewer/2022013121/55a346eb1a28abbe1f8b4687/html5/thumbnails/20.jpg)