Как проверить, что ваши файлы никуда не загружаются
Каждый такой сайт пишет, что у него всё приватно. Как это реально проверить?
Начните с правильной установки
Заявление о приватности на рекламной странице — не доказательство. Как и значок замка, бейдж или фраза в политике конфиденциальности: всё это описывает намерение, а знать вы хотите поведение. К счастью, поведение наблюдаемо: в каждом браузере есть инструменты, которые показывают, что именно страница отправляет, и чтобы их читать, не нужно быть разработчиком.
Проведите эти проверки на этом сайте. Проведите их на том сайте, которым пользовались раньше. Смысл не в том, чтобы поверить другому заявлению, а в том, чтобы перестать нуждаться в вере.
Проверка первая: смотрите на панель сети
- Откройте инструменты разработчика. В большинстве настольных браузеров это F12, Ctrl+Shift+I или Cmd+Option+I.
- Перейдите на вкладку сети (Network) и убедитесь, что запись включена.
- Перезагрузите страницу, затем очистите список, чтобы начать с пустого журнала.
- Выберите свой файл и запустите операцию.
- Отсортируйте по размеру или посмотрите в столбце метода на запросы POST и PUT.
Ищете вы запрос, полезная нагрузка которого сопоставима по величине с размером вашего файла, и вообще любой запрос к узлу, который не является сайтом, где вы находитесь. Локальный инструмент покажет запросы к собственному коду — скриптам, таблицам стилей, модулям WebAssembly, возможно, файлу модели, — а затем, пока идёт работа, не покажет ничего. Загрузчик покажет запрос, несущий несколько мегабайт, ровно в тот момент, когда вы нажали кнопку.
Проверка вторая: отберите сеть
Это самая сильная проверка, и никакой квалификации она не требует. Загрузите страницу обычным образом, воспользуйтесь инструментом один раз, чтобы нужный ему движок попал в кэш, а затем отключитесь: включите режим полёта, выключите Wi-Fi или воспользуйтесь переключателем офлайн-режима в инструментах разработчика. Теперь обработайте файл.
Если операция завершилась, обработка не могла произойти нигде, кроме вашей машины. Спорить тут не о чем. Если она провалилась или зависла, значит, что-то в цепочке потребовало сервера — это может быть вполне законно, например файл модели, ещё не попавший в кэш, — но теперь вы знаете, о чём спрашивать.
Проверка третья: прочитайте политику безопасности контента
Политика безопасности контента — это заголовок, который отправляет сайт и который применяет браузер. Её директива connect-src перечисляет адреса, к которым странице разрешено открывать соединение. Если connect-src ограничена собственным источником сайта, браузер сам заблокирует попытку отправить что-либо куда-то ещё, что бы ни пытался сделать код страницы.
Чтобы её прочитать, откройте вкладку сети, щёлкните по запросу самого документа — обычно это первая строка — и найдите среди заголовков ответа Content-Security-Policy. Политика, в которой стоит connect-src 'self' и нет внешних узлов, — это осмысленное ограничение, применяемое браузером, а не обещание.
Что доказывает каждая проверка
| Проверка | Что она доказывает | Что она не покрывает |
|---|---|---|
| Панель сети | Что эта страница отправила за эту сессию | Другую ветку кода, более позднюю версию сайта или запрос, сделанный после того, как вы перестали смотреть |
| Проверка офлайн | Что сама обработка выполняется локально | Не поставлено ли что-то в очередь на отправку после того, как вы снова подключитесь |
| Политика безопасности контента | Куда браузер вообще разрешит соединяться | Всё, что политикой разрешено, включая собственный источник сайта |
| Чтение исходного кода | Что содержится в поставляемом коде | Трудозатраты; и повторять это придётся при каждом изменении сайта |
Вместе они сильны. По отдельности у каждой есть брешь, и всякий, кто убеждает вас, что вопрос закрывается одной-единственной проверкой, упрощает.
Признаки того, что инструмент не локальный
- Полоса прогресса, скорость которой никак не связана с вашим устройством: ровная и одинаковая и на быстром ноутбуке, и на старом телефоне.
- Результат, выдаваемый ссылкой на URL для скачивания в их домене, а не файлом, который браузер уже держит у себя.
- Сообщение о том, что файлы удаляются с их серверов через столько-то часов. Эта фраза — признание, что файлы там были.
- Очередь или ограничение частоты запросов. У вашего собственного процессора нет очереди, общей с другими людьми.
- С отключённой сетью инструмент срабатывает только на первом небольшом файле, а потом перестаёт.
Пределы проверки
Проверка говорит вам о той версии сайта, которую вы протестировали, и о том дне, когда вы это сделали. Завтра сайт может измениться. Поэтому важнее всего проверки структурные: строгая политика безопасности контента и работающий офлайн-тест — это свойства того, как приложение устроено, а не обещания насчёт конкретного выпуска.
Две вещи остаются за пределами всех проверок из этого списка. Расширение браузера может прочитать содержимое любой страницы, включая файл, который вы в неё загрузили, и ни один сайт этому не помешает. Ваша операционная система видит каждый открытый вами файл. Если документ настолько чувствителен, что это имеет значение, обрабатывайте его в офлайновой программе на машине, которую контролируете, и считайте любой сайт — включая этот — неподходящим для такой задачи инструментом.
Инструменты для этого
Источники
- W3C — Content Security Policy Level 3
- MDN — Content-Security-Policy connect-src
- Chrome DevTools — inspect network activity
- MDN — Firefox Network Monitor