Next: , Previous: , Up: Articles  


Почему современный Web для меня недоступен и мёртв?

Под современным Web я понимаю распределённую систему раздачи закрытого исполняемого кода. Под старым добрым Web я понимаю распределённую систему раздачи документов. Прежде мы использовали броузеры чтобы по стандартизованным протоколам получать документы, такие как HTML и сопутствующие им изображения например. А также заполнять формы, делать запросы, в общем иметь достаточный для большинства задач интерактив. Сейчас наши броузеры используются для прозрачного скачивания исполняемого кода и его выполнения в виртуальной машине броузера.

Если человек хочет использовать только свободное ПО, то современный Web для него неприемлемый вариант, так как сайты распространяют закрытый код (обфускация, WebAssembly, и т.д.).

Это также и угроза безопасности: заход на современный Web-сайт идентичен скачиванию исполняемого .exe и его запуску. Виртуальная машина не может кардинально помочь в изоляции вредоносного кода: особенности работы большинства процессоров позволяют читать и изменять данные в произвольных местах оперативной памяти, даже из JavaScript программы запускаемой внутри броузера под виртуальной машиной другой операционной системы. Кроме того, размер и скорость изменения кода броузеров настолько велики, что в нём не может быть хоть сколько-то пристального аудита и мы постоянно из года в год видим множество уязвимостей, когда JavaScript код может вылезть за пределы броузера или хотя бы контекста сайта в котором он работает.

По сути, современный броузер это средство удалённого управления вашим компьютером. Зашёл на сайт, он тебе дал код который броузер автоматически прозрачно скачивает и исполняет. Код может скомпрометировать всё что есть на компьютере, так как нет ни одной рабочей защиты от вредоносного кода.

Может создатели сайтов всё это делают не со зла? Всё же ещё много сайтов остаются рабочими даже без включённого исполнения кода (отключённого JavaScript). В 99% случаев, если отключить JavaScript: исчезнет реклама и куча систем слежки, сбора данных, телеметрии, счётчиков посещений (всё это одно и то же). То есть, в 99% случаев этот JavaScript (+WebAssembly и всё смежное с ними) используется явно не для благих целей пользователей, а для нарушения их приватности.

Может быть создатели броузеров всё же стараются обеспечивать нашу приватность и безопасность? Отнюдь, ведь сами же эти броузеры её первым делом активно и нарушают, плюс используют для подсовывания рекламы, а также для политических игр. Плюс они старательно запрещают и мешают установке дополнений/кода который бы не был скачан с их централизованных цензурируемых ресурсов:

Ссылок про Chrome/Chromium меньше, просто потому что они с самого начала делали всю эту "телеметрию" и особо не скрывали что по полной следят за пользователем. Apple броузеры аналогично проводят слежку. Но в Apple мире слежка и цензура устраиваются на уровне вообще всей ОС.

Из популярных броузеров нет ни одного, кто действительно бы уважал приватность. Безопасность, при таком объёме часто изменяемого кода, практически невозможно с технической точки зрения обеспечить. Броузеры, по факту, являются первостепенными нарушителями приватности и они из года в год затачиваются под постоянную слежку за всеми действиями пользователей.

От версии к версии, в броузерах пропадает функционал по управлению cookies или даже доверенными X.509 сертификатами. Если не пропадает, то через менюшки штатно его уже не получить. Чтобы ограничить возможность контроля пользователя над своими действиями и ресурсами которые он хочет посещать.

Хорошо, Chrome/Chromium с самого начала не могли рассматриваться из-за проблем с приватностью. Но почему не взять ещё "не испорченную" версию Firefox? Я не раз встречался с тем, что современный JS код просто не будет под ней работать. Если не обновлять броузер раз в 1-2 года, то все новые (и обновлённые) JS-поделки не будут работать.

А взять версию не настолько старую, но выпилить из неё слежку и цензуру? API Firefox менялся так часто и кардинально, что прежде мною используемые плагины (Pentadactyl главным образом) уже не работают. Использовать броузер без него проблематично – это мука. Более того, современный Firefox невозможно собрать без скачивания из Интернета бинарного исполняемого файла: для сборки нужен Rust, который не собрать по другому. mrustc пытается сделать сборку без этого бинарника (кем, как когда, с какими backdoor-ами собран?), но под FreeBSD мне так и не удалось его завести и авторы Rust не парятся по этому поводу. Да и вроде бы Firefox перестал поддерживать OSS, что означает отсутствие звука в FreeBSD.

Резюмирую:

Раньше я писал немного более детально про JavaScript:

Что бы я мог предложить как решение, когда всё же не хватает Web 1.0 технологий? Или предложить как решение, но не требующее запуска у себя проприетарного ПО? Я бы предложил делать аналог BBS-ок: они не предлагали качать какой-то интерпретируемый код для своей работы – они просто предоставляли удалённый доступ, просто такой telnet. Современный Web-сайт, раз перехватывает нажатия клавиш, раз в нём нет "документов", то в нём всё равно не будет работать поиск ("/" в Pentadactyl), не будет работать pgUp/Down, копирование в буфер обмена, сохранение HTML-страницы, чтобы в offline посмотреть – раз всё равно ни черта в нём не работает, то можно было бы предоставить VNC/X11-like удалённый доступ до сервера с запущенным приложением. Разработчики приложения вообще могут писать его на чём угодно, а мы использовать эти приложения просто по VNC/X11, ничем не жертвуя в плане удобства (всё равно ни черта не работает функционал броузеров как прежде), зато не запуская у себя никакого ПО извне.

Плюс, я мог бы поспорить что и трафик это могло бы сэкономить, при хорошем сжатии графики, ибо 10мин FullHD запись экрана работы за компьютером у меня в VP9-lossless заняла 22.5MiB всего, для примера. А X11-like в теории вообще может занимать копейки, при сжатии растровых изображений.


Next: Преимущества и недостатки redo, Previous: Why I won’t use Let’s Encrypt, Up: Articles