Сравнительный анализ скриптов голосайо и голдвойса
По мотивам https://goldvoice.club/@eee/nogolosio я решил посмотреть, какой из клиентов что грузит в браузер. Не так чтобы я детально расследовал, украдут ключ или нет :) - считаю бремя доказательства лежит на утверждающем.
Что же имеем:
Сторонние скрипты
@golosio подгружает следующие сторонние библиотеки:
- с cdn.ravenjs.com подгружается ravenjs версия 3.17. видимо, для надежности, подгружается и минифицированный файл, и исходник. ворон - библиотечка для sentry.io, который, насколько я понимаю, является инструментом для качественной отправки ошибок на сервер. иными словами, библиотека для отладки
- с фейсбука грузятся - c доменов connect.facebook.net, staticxx.facebook.com - соответственно sdk + fbevents и
некий "Facebook Cross-Domain Messaging helper". это, если что, не яваскрипт, а полноценный хтмл-документ. - с гугла грузится гугл-аналитика
@goldvoice подгружает:
- use.fontawesome.com - шрифты
- с гугла грузится гугл-аналитика
Дополнительно, с домена голдвойса грузятся
- sjcl v.1.0.7 - это про криптографию
- prismjs - это библиотека про css и отображение текста программ разными цветами
- jquery 3.2.1 - старая, одна из самых популярных, библиотека для манипуляций с веб-страничкой (загрузка данных через ajax, вставка данных в html-документ, обработка данных из форм и многое другое
- golos.min.js - библиотека, собственно, для работы с блокчейном
@ropox отметил, что эти скрипты было бы лучше грузить с их родных доменов, тогда им было бы больше доверия. я бы тоже отметил, но не успел :). @on1x, есть ли разница, грузить эти либы с голдвойса, или с cdn?
Основные скрипты
Голосио - минифицированный (до уровня имён переменных и функций длиной 1 буква) блоб, поставляющийся как golos.io/assets. Тут всё до кучи, одним файлом - и шифрование, и react.
После приведения файла в читабельный вид (стандартная разметка с уровнями вложенности и переносами строк) размер блоба оказался порядка 150 тысяч строк кода. Уровень вложенности зашкаливает.
Файл называется app< тут какой-то хэш>.js, собирается webpack'ом. Желающий проверить, что файлик соответствует исходному коду, по всей видимости, может скачать мастер-ветку, произвести сборку самостоятельно, и сравнить файлы. Соответствие названия файла какому-то хэшу само по себе ничего не доказывает.
Голдвойс - всё, что не в сторонних библиотеках, также отдаётся одним файлом, не минифицироанным, длина почти 5 тысяч строк кода, поставляется как goldvoice.club/js. В отличие от вебпак-сборки, он более читабельный - функции имеют имена, имена длиннее одной буквы, осмысленны.
Итак
- Оба вебклиента продают вас гуглу. Сейчас такое время, все это делают. Голосио дополнительно продаёт вас цукербергу (какие гарантии что цукерберг не крадёт мои ключи?.. ). Не очень удивительно, учитывая, что голосио написан на реакте (верный путь пабидить фейсбук - использовать UI-библиотеку, написанную и продвигаемую фейсбуком)
- Голдвойс грузит бизнес-логику отдельным файлом, код не обфусцирован. Голосио грузит логику блобом с остальными скриптами, код обфусцирован. То есть первое, что нужно сделать, чтобы убедиться, что всё в порядке - скачать исходники с гитхаба, сделать сборку самому, сравнить получившуюся сборку с загруженной с голосио. Если сборки окажутся одинаковыми, следующим шагом можно идти читать исходный код.
- Голдвойс грузит некоторые 3rd-party скрипты со своего домена (не внедрит ли он туда закладку? как вы думаете? ). Мне лень, желающие могут скачать соответствующие скрипты с cdn и сравнить с копиями, загруженными голдвойсом в браузер. Голосио грузит сторонние библиотеки с родных доменов/cdn (и возможно, что-то ещё упаковано в блоб) Обновление: голдвойс 3 из 4 сторонних библиотек теперь грузит с cdnjs, локально со своего домена подтягивает только golos.min.js
Обновление 2: попробовал внедрить тег <script> в тело поста. Голосио скрипт режет и не выполняет, голдвойс пока что пропустил как есть.
Мне кажется, что это дырка. Возможно, что некий злодей напишет пост-замануху, внутри которого поселится подлый скрипт, который выполнится при просмотре поста, и например станет мониторить поле ввода активного ключа.
Обновление 3: между тем как запостил данные про обновление 2 в телеграм голдвойса и тем как добавил обновление 2 сюда в пост - Анатолий успел пофиксить багу! Оперативность на уровне