Свободное использование сети Интернет
Статья из серии "Практическое применение свободного ПО в повседневной жизни"
Интернет в широком смысле (WWW) – это система получения документов с удалённых машин, которые могут ссылаться друг на друга при помощи ссылок. Эти документы могут быть как статичными, так и формироваться динамически при заполнении форм, после отправки которых удалённый сервер сформирует новый документ.
Документы могут содержать:
- Отформатированную текстовую информацию (текст, ссылки, списки, таблицы и т.д.)
- Элементы взаимодействия с пользователем (кнопки, формы)
- Видео
- Аудио
- Изображения
- Стили
- Другие документы при помощи тега iframe
Это было правдиво до встраивания скриптового языка Javascript, а также расширения API браузеров, доступного Javascript'у, с началом поддержки HTML5. Документы теперь могут представлять из себя веб-приложения, которые похожи на полноценные программы. И как полагается полноценной программе вы запускаете их при помощи ресурсов своей вычислительной машины.
Исполнение Javascript
Ключевую роль в популярности интернета как платформы для создания приложений бизнеса сыграла возможность доставить программу пользователю, не заставляя его что-либо качать и устанавливать. Доставка программ на устройства пользователей может представлять отдельную сложную задачу, а тут мы вводим URL и получаем программу на исполнение. Удобно для разработчиков, удобно для пользователей. Но не совсем.
Браузеры предоставляют инструменты для интроспекции всего, что загружается к вам на машину, тем не менее основной проблемой является тот факт, что исполняемый код запускается до того, как вы собственно сможете его проанализировать. Более того клиентский Javascript может быть и непригоден в принципе для анализа из-за минификаций и обфускаций.
Особенно остро эта проблема стояла раньше, когда так называемая песочница исполнения Javascript имела пути обхода и скрипт с веб-ресурса мог сделать что-нибудь плохое с вашей системой. Сейчас это сложная система, которая требует разрешения, если она пытается получить доступ к веб-камере, микрофону и т.д, но не смотря на это у Javascript всё равно много возможностей использовать вычисления на стороне пользователя в корыстных целях.
Как может навредить Javascript
Если предположить, что проблем с выходом из песочницы нет, то при помощи Javascript могут быть реализованы следующие вещи:
- Отслеживание курсора мыши (Яндекс.Метрика)
- Отслеживание ввода с клавиатуры (Различные чат боты могут отправлять информацию по мере набора, не уведомляя вас об этом)
- Майнинг и передача результата третьим лицам (Joyreactor)
- HTTP запросы на ресурсы от третьих лиц
- Отображение рекламы и нежелательной информации от третьих лиц (Реклама от Google, Yandex)
- DRM системы, ограничение доступа к файлам (Многие аудио и видео плееры не позволяют загрузить проигрываемый файл)
- Данные о вашем браузере и операционной системе могут быть переданы третьим лицам (впрочем на стороне сервера это также может быть сделано)
Фонд свободного ПО GNU предостерегает от использования Javascript: The JavaScript Trap
Что можно сделать
Самое простое и очевидное – перестать использовать Javascript в принципе. Это можно сделать, поменяв соответствующую настройку вашего браузера или установив расширение NoScript.
Второй способ – разрешить использовать только свободный Javascript. Для этого существует расширение GNU LibreJS. Это расширение анализирует код перед его исполнением и в случае понимания, что перед ним код под свободной лицензией, он его пропускает на исполнение. Также расширение проверяет специальный участок сайта с таблицей свободных библиотек, где явно указано какой код безопасен к исполнению.
Трудности
К сожалению оба способа сопряжены с проблемами. Из-за массового использования SPA при выключенном Javascript не будут работать большинство веб-сайтов, к которым вы скорее всего привыкли. Из-за анализа кода при использовании LibreJS могут быть интенсивно использованы ресурсы процессора и также большая часть веб-сайтов не будет работать. К тому же существуют много проектов со свободным Javascript, которые не имеют явную информацию о лицензиях, что не даёт LibreJS исполнить этот код.
Для решения этих проблем вам понадобится менять уже ваши привычки. Для обретения вычислительной свободы надо жертвовать комфортом. Это правдиво не только при использования браузера, но и в целом при использовании свободного ПО. Таким образом вам возможно придётся перестать пользоваться Вконтакте, перейти из Twitter в Mastodon, из YouTube на PeerTube (или смотреть Youtube через mpv), из Google Maps на OpenStreetMaps и так далее. Процесс выработки новых привычек весьма сложный, но вполне посильный при должном желании.
Что еще следует учесть
Cross-Origin Resource Sharing (CORS)
Концептуальная проблема зависящих друг от друга документов заключается в определении из каких мест безопасно загружать файлы, а из каких нет. Создатели браузеров и протокола HTTP сделали CORS-заголовок, который со стороны сервера передаётся вместе с отдаваемым ресурсом. Этот заголовок определяет с каких адресов к данному ресурсу можно получить доступ, а с каких нельзя.
Зачастую разработчики разрешают загрузку отовсюду, забивая на изначальную задумку механизма CORS. Обычная картинка или ссылка на загружаемый-файл (css или js скрипт например) могут послужить потенциальным совершением запроса на нежеланный ресурс. Чтобы этого не происходило можно установить расширение "Third-party Request Blocker"
Минимазация использования аккаунтов
Многие веб-сайты требуют зарегистрировать аккаунт даже если на это нет особой причины. Например поисковые системы Yandex и Google запоминают ваши действия и используют эту информацию для отображения релевантной рекламы. Так как большинство интернет ресурсов закрытые, то пользователь не получает информацию каким конкретно образом его данные обрабатываются на сервере в долгосрочной перспективе. По этой причине лучше всего минимизировать количество веб-сайтов, где требуется регистрация.
TOR
Веб-сервер может идентифицировать конкретно вас, если вы будете делать запросы напрямую. Для анонимизации в интернете частым решением является использование Tor.
Поиск
Свободная метапоисковая система Searx позволяет искать сразу во многих поисковых системах и работает с LibreJS.
Sourcehut
Gitlab и Github используют несвободный Javascript. Gitlab невозможно использовать без Javascript или с LibreJS в принципе, на github часть информации недоступна без Javascript. Sourcehut – альтернативный хостинг для контроля версий, который не использует Javascript во всём проекте.
Свободный браузер
Не каждый браузер под свободной лицензией считается свободным. Так например Chromium не рекомендуется к использованию из-за наличия бинарных блобов в процессе сборки (частично они удаляются проектом ungoogled-chromium), а Firefox не рекомендуется к использованию из-за поддержки технологии DRM для проигрывания видео.
GNU Icecat удаляет возможность использования DRM, добавляет LibreJS, блокировщик запросов на ресурсы третьих лиц, а также использует duckduckgo в качестве поискового движка по-умолчанию.
Заключение
Свободное использование сети интернет может представлять из себя трудную задачу из-за того, что многие веб-ресурсы используют несвободный Javascript и зачастую без Javascript не функционируют как требуется. Для решения этой проблемы нужно менять свои привычки и инструменты.