Як перевірити, що ваші файли нікуди не надсилаються
Кожен такий сайт пише, що він приватний. Як це реально перевірити?
Почніть із правильного припущення
Заява про приватність на рекламній сторінці — не доказ. Так само як і значок замка, бейдж чи речення в політиці конфіденційності: усе це описує наміри, а вас цікавить поведінка. На щастя, поведінку видно: у кожному браузері є інструменти, які показують, що саме сторінка надсилає, і щоб їх читати, не треба бути розробником.
Проженіть ці перевірки на цьому сайті. Проженіть їх на сайті, яким ви користувалися раніше. Ідея не в тому, щоб повірити іншій заяві, а в тому, щоб більше не мусити вірити на слово.
Перевірка перша: подивіться на панель мережі
- Відкрийте інструменти розробника. У більшості десктопних браузерів це F12, Ctrl+Shift+I або Cmd+Option+I.
- Перейдіть на вкладку Network і переконайтеся, що запис увімкнено.
- Перезавантажте сторінку, а тоді очистіть список, щоб почати з порожнього журналу.
- Виберіть файл і запустіть операцію.
- Відсортуйте за розміром або пошукайте в колонці Method запити POST і PUT.
Шукаєте ви ось що: будь-який запит, тіло якого приблизно дорівнює розміру вашого файлу, і взагалі будь-який запит до вузла, який не є сайтом, де ви перебуваєте. Локальний інструмент покаже запити за власним кодом — скрипти, стилі, модулі WebAssembly, можливо, файл моделі, — а далі, поки триває робота, нічого. Завантажувач покаже запит на кілька мегабайтів саме тієї миті, коли ви натиснули кнопку.
Перевірка друга: заберіть мережу
Це найсильніша перевірка, і вона не потребує жодних спеціальних знань. Завантажте сторінку як звичайно, скористайтеся інструментом один раз, щоб потрібний рушій потрапив у кеш, а тоді від'єднайтеся: увімкніть режим польоту, вимкніть Wi-Fi або скористайтеся перемикачем офлайн-режиму в інструментах розробника. Тепер обробіть файл.
Якщо все завершилося, обробка не могла відбутися ніде, крім вашої машини. Тут нема про що сперечатися. Якщо ж вона провалилася або зависла, щось у конвеєрі потребувало сервера — це може бути цілком законно, наприклад, файл моделі, який ще не потрапив у кеш, але тепер ви знаєте, що варто запитати, що саме.
Перевірка третя: прочитайте політику безпеки вмісту
Політика безпеки вмісту — це заголовок, який надсилає сайт, а виконує браузер. Її директива connect-src перелічує адреси, до яких сторінці дозволено відкривати з'єднання. Якщо connect-src обмежена власним джерелом сайту, браузер сам заблокує спробу надіслати щось деінде, хоч би що намагався зробити код сторінки.
Щоб її прочитати, відкрийте вкладку Network, клацніть запит самого документа — зазвичай це перший рядок — і знайдіть у заголовках відповіді 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