Хранить документы в облаке – удобно. Можно синхронизировать данные между домом и офисом, можно надеяться, что так они окажутся в большей сохранности, чем на флэшке. Удобно перекидывать документы между сотрудниками.
Но одно дело удобство, а другое – надежность.
Проблема в том, что если вам, например, прислали ссылку на облачное хранилище, и вы ввели пароль доступа, предполагающий возможность изменения данных (а это нормально, если вы постоянно перекидываете данные между пользователями), то к вашим данным получают доступ все приложения, работающие на компьютере (или, если быть точными – все, которым вы сами дали доступ).
Типична ситуация, недавно описанная как уязвимость WhatsApp и Telegram для Android. Суть ее в том, что документы, находящиеся во внешнем хранилище, если они доступны не только для чтения, но и для записи, могут быть изменены другими приложениями или пользователями (например, злоумышленниками, получившими удаленный доступ к вашему компьютеру). Приложение, которым вы открываете файл (тот же браузер), не контролирует его неизменность. Между получением доступа к файлу (открытием области хранения) и открытием файла есть временной промежуток. Точно так же существует промежуток времени между скачиванием файла (помещением его в кэш на диске) и открытием файла.
Вот как, например, дело обстоит в Android (напомним, что огромное количество приложений для этой ОС требуют разрешения по максимуму, даже если они им не нужны – и пользователи дают эти разрешения).
Запись во внешнее хранилище (WRITE_EXTERNAL_STORAGE) — это общее разрешение, запрашиваемое приложениями Android, и более миллиона приложений в Google Play имеют этот доступ.
Собственно, подменить можно все что угодно – от платежной информации и до текста новости и содержимого рекламы.
Теоретически можно было бы вместе с файлом передавать его контрольную сумму (или подписывать файл). На практике возиться с проверкой контрольной суммы для каждого из файлов – слишком накладно.