Перейти к содержимому

Фотография

Выявление утечки данных. Как найти

утечка данных утечка cache

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 curly86

curly86

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 12 октября 2017 - 10:49

Доброго времени суток.

Я тестировщик из декрета, то есть не углублюсь в подробности.:)

В ходе тестирования приложения клиент обнаружил утечку данных из одного аккаунта в другой (хедер). Баг критический, поэтому нужно кровь из носа найти и починить. Но беда в том,что я уже неделю пытаюсь воспроизвести (на проекте один тестеровщик), никак. При первом открытии виртуалки (решено было тестить на виртуалке, чтоб девелоперы могли зайти в логи, если вдруг прольется свет на эту темную историю) баг воспроизвела моментально. Как?! Не знаю, но больше его не было.

Ситуация такая - два аккаунта, создающие опросники. В одном есть стили для опросов, в другом есть стили. В одном аккаунте есть стиль с хедером картинки кока-кола, в другом аккаунте есть стиль с хедером пепси. Так вот заходит админ аккаунта колы и видит в репорте в хедере картинку пепси. 

Пробовала сессию ставить на минуту и параллельно проходить опросы, менять стили, менять картинки. Ждала пока сессия заэкспарится в одном, в другом редактировала стиль хедера - думала, авось схавает кеш открытого аккаунта при логине... Бесполезная трата времени...

Какие могут быть еще идеи? Как его поймать?

 


  • 0

#2 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 12 октября 2017 - 11:04

Дропнуть все кэши и поднять новую виртуалку. Ошибки инициализации бывают такие что воспроизводятся только при первом входе.
  • 1

#3 curly86

curly86

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 12 октября 2017 - 12:11

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

Спасибо за совет! Попробую


  • 0

#4 SALar

SALar

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 2 298 сообщений
  • Город:Москва


Отправлено 12 октября 2017 - 12:27

Кэш - вещь плохая. Иногда приходится тестить  в режиме "инкогнито".

 

 

PS. Вебприложения вообще неприятная вещь...


  • 2

-- 

Сергей Мартыненко

Блог 255 ступеней (байки для оруженосца)

facebook (Дети диаграммы Ганта)

ВебПосиделки клуба имени Френсиса Бэкона 

 


#5 bobylev

bobylev

    Активный участник

  • Members
  • PipPip
  • 77 сообщений
  • ФИО:Бобылев Максим

Отправлено 12 октября 2017 - 14:49

В ходе тестирования приложения клиент обнаружил утечку данных из одного аккаунта в другой (хедер).

У клиента было два аккаунта, или один? Если один, то утечка явно на уровне сервера. Если два, то может быть как сервер, так и кэш браузера на клиенте.


  • 0

#6 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 12 октября 2017 - 15:24

возможно это баг в системе управления сессиями

 

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

 

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


  • 0

#7 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 12 октября 2017 - 16:06

В ходе тестирования приложения клиент обнаружил утечку данных из одного аккаунта в другой (хедер).

У клиента было два аккаунта, или один? Если один, то утечка явно на уровне сервера. Если два, то может быть как сервер, так и кэш браузера на клиенте.

Еще бывают добрые сервера, которые дают клиенту то, что он попросил, исходя из мысли, что клиент не попросит то, о чем не знает (например информацию по заказу с номером на 1 меньше текущего). И бывают сервера, которые при запросе с неполными данными отдают некоторый дефолтный ответ, например при запросе хедера null, показывают какой-нибудь хедер, не обязательно принадлежащий этому клиенту.
  • 0

#8 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 12 октября 2017 - 18:55

https://www.owasp.or...ent_Cheat_Sheet

 

пусть разрабы почитают

 

возможно управление сессиями самодельное, и там допустили ошибку. Рекомендуется использовать встроенное управление сессиями из фреймворка, на котором идёт разработка

 

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


  • 0

#9 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 13 октября 2017 - 11:34

Это веб-приложение? Если да, то скорее всего кэш. В данном случае у компонента, отвечающего за вывод хедера. Причем обычно при первом заходе.

Такое иногда встречаешь (даже на моем проекте подобное было), заходишь на сайт и видишь, что ты никакой не Роман, а Екатерина.

Если просто визуальные стили - то еще не так страшно. А то на одном из сайтов я смог зайти в чужой личный кабинет  :lol:


  • 0

#10 curly86

curly86

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 19 октября 2017 - 12:18

Всем спасибо большое за помощь!

Девы нашли проблему. Руками его нереально поймать.

Дело в инициализации. Цитата:

Инициализация статических компонентов плохо организована в приложении. Вместо того, чтобы производить инициализацию на старте приложения, она происходит во время старта запроса. После старта, в приложение может прийти много одновременных запросов и все они начнутся выполняться параллельно. У первого запроса проверится значение глобальной переменной, что инициализация еще не происходила, обновится флаг, что инициализация прошла (хотя еще не прошла), и запустится код по инициализации различных статических классов, включая и инициализацию кэша. Второй запрос тем временем увидит флаг, что все инициализировано и будет выполняться дальше. Никаких блокировок не используется.

Вставляя небольшую задержку в код перед инициализацией кэша, было довольно не сложно сделать так, чтобы второй параллельный запрос завалился с ошибкой. Оставался открытым вопрос, как сделать так, чтобы данные из одного аккаунта стали видны в другом, для этого надо было умудриться создать cache manager (вызвать Text manager) до инициализации фабрики. 

Возможно кому-нибудь потом пригодится. :)
 


  • 0

#11 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 19 октября 2017 - 13:48

Рейс кондишн на отложенной инициализации.
  • 2



Темы с аналогичным тегами утечка данных, утечка, cache

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных