Mattermost кэширует переписку
Сейчас полно псевдо-десктопных приложений. Таких, которые написаны не десктоп-разработчиками, а фронтендерами через штуки вроде Electron — технологии, позволяющей запускать веб-приложение внутри кастомной оболочки.
Electron-приложения не полностью контролируются пользователем. Пользователь не может просто взять и очистить кэш, удалить куки и так далее. Если разработчики приложения не добавили такую кнопку, то «нативного» способа это сделать нет. А значит, с кэшем и куками разработчики должны обращаться очень осторожно.
И вот что, если эти разработчики решат оптимизировать сеть через кэширование API-эндпоинтов?
Вот взять мессенджер вроде Slack. Нет же смысла загружать одни и те же сообщения снова и снова, верно? Старые сообщения вряд ли куда-то денутся. Так почему бы серверу не отправлять в ответ 304, когда клиент запрашивает эти сообщения, а клиенту не брать их из кэша?
Похоже, именно так рассуждали ребята из Mattermost. Иначе я не могу объяснить, почему Mattermost ведёт себя именно так.
Потому что да — ответ на каждый GET-запрос, который Mattermost отправляет серверу, попадает в кэш приложения. А потом этот кэш легко доступен любому, у кого есть доступ к машине. Даже если я вышел из аккаунта. Даже если я полностью удалил приложение!
Другая сторона этой истории ещё смешнее. Представим, что мы увольняем сотрудника, баним его аккаунт в Mattermost — а у него всё ещё есть доступ ко всем чатам, приватным данным, спискам участников и их метаданным (телефоны, почты и так далее). Безопасность! Надёжность! Всё как мы любим.
(У Slack, кстати, этой проблемы нет.)