Как Firefox генерирует хеш-значения при установке расширений

Я написал некоторый код, который вручную берет XPI, который уже был установлен из одного профиля Firefox, и настраивает xpi для ручной настройки на другом профиле или компьютере.

Итак, я все настроил в базе данных extensions.sqlite, которая находится в папке профиля пользователя. Я даже могу переименовать расширение на лету, когда сам xpi перемещаю в папку расширения.

Вот мой вопрос: когда я извлекаю XPI, появляется файл с именем «harness-options.json». В этом файле есть две переменные, docsSHA256 и jsSHA256.

Эти переменные для хеширования должны быть каким-то образом основаны на расширении, но я не уверен, как именно.

Может ли кто-нибудь указать мне правильное направление относительно того, как Firefox генерирует эти хэш-коды?

Спасибо.


person Garrett    schedule 14.11.2013    source источник
comment
Я обнаружил, что jsSHA256 создается с использованием файла расширения main.js. Я все еще не могу найти другой SHA.   -  person Garrett    schedule 14.11.2013


Ответы (1)


Firefox вообще не генерирует эти хэши. Это Add-on SDK, который делает это. Менеджер расширений Firefox вообще не заботится о harness-options.json. Загрузчик SDK, в свою очередь, немного заботится о harness-options.json, но в данный момент ничего не делает с jsSHA256 или docsSHA256. Другие инструменты, такие как валидатор, который запускается, когда вы что-то загружаете на addons.mozilla.org, заботятся как минимум о jsSHA256.

Следует отметить, что надстройки, не использующие SDK (обычно) вообще не содержат файл harness-options.json.

Будет один jsSHA256 на модуль lib/, например. один для main.js и так далее.

docsSHA256 для main.js будет создано из README.md, когда SDK создаст XPI. Очевидно, что README.md не упаковано в XPI. Для всех остальных модулей docsSHA256 кажется нулевым.

Рассматриваемый код находится в manifest.py. .

В конце концов, вы вообще не должны возиться с XPI (кроме переупаковки распакованных расширений) и/или extensions.sqlite. Особенно последний не предназначен для внешних изменений. Просто поместите ваши файлы XPI в соответствующую папку extensions/ профиля, и менеджер надстроек автоматически подберет их при следующем запуске браузера.

person nmaier    schedule 14.11.2013
comment
Он автоматически добавляет расширения, но также ставит большое ПРЕДУПРЕЖДЕНИЕ, АКТИВИРУЙТЕ ЭТО РАСШИРЕНИЕ. Поскольку я не хочу, чтобы это произошло, я вынужден вручную добавлять все в базу данных sqlite. Я понял, что docsSHA256 в основном берет хэш пустого файла. Дело в том, что эти хэши перестанут использоваться Firefox, когда они пойдут по стопам Chrome и сделают все расширения ДОЛЖНЫ размещаться на своем сайте дополнений. В то же время, я буду оставаться на шаг впереди них в этом отношении. - person Garrett; 14.11.2013
comment
Нет никаких признаков того, что Mozilla может пойти по стопам Chrome и создать обнесенный стеной сад надстроек. Я не знаю, откуда вы взяли эту идею... Это нарушило бы их (наш) манифест не говоря уже о гневе, который они навлекут на себя со стороны сообщества. - person nmaier; 14.11.2013
comment
Чего я не понимаю, так это почему они вообще просят что-то активировать. Любой со злым умыслом может легко обойти любые функции безопасности, за исключением того, что надстройки будут работать так же, как скоро будут работать Chrome. Вот почему я думаю, что они сделают аддоны закрытыми. Как они будут конкурировать с хромом, если хром будет невероятно более безопасным по сравнению с Firefox? - person Garrett; 15.11.2013
comment
Как вы уже сказали сами: если вы уже находитесь в системе и являетесь злоумышленником, все ставки в любом случае отключены, в том числе и для Chrome. Chrome не более или менее безопасен из-за своей функции. Предупреждение Firefox было создано для предотвращения установки надстроек (для всей системы), которые не являются вредоносными, но в любом случае дерьмовыми, такими как все эти красивые панели инструментов, которые устанавливаются с другим программным обеспечением. Несоблюдение руководств по дополнениям может действительно поместите вас в черный список. - person nmaier; 15.11.2013
comment
Извините, если я вас раздражаю, но мне очень нравятся дискуссии о безопасности приложений. Какая польза от черного списка, если он основан только на идентификаторе приложения? - person Garrett; 15.11.2013
comment
И не могли бы вы взглянуть на это, не прошло и месяца, как Firefox изменил способ проверки расширений и добавил таинственную новую базу данных sqlite, называемую webappsstore.sqlite. - person Garrett; 11.12.2013
comment
webappstore.sqlite не совсем новый и не совсем загадочный. И еще не было никаких изменений в расширениях, хотя недавно было предложение о том, что называется файловым реестром, если вы имеете в виду это. Это предложение имеет некоторую оппозицию, в т.ч. сам. Предложение было снова отозвано (на данный момент), потому что есть некоторые опасения, которые нам необходимо пересмотреть и посмотреть, что можно сделать для их решения. - person nmaier; 11.12.2013
comment
Теперь они хранят информацию о расширении в JSON вместо БД sqlite. Теперь, что заставило бы их сделать это? - person Garrett; 11.12.2013
comment
Просто и понятно: производительность. Во-вторых: простота использования и ремонтопригодность. Обычное количество установленных расширений позволяет быстрее читать/записывать один файл json (вне основного потока), чем иметь дело с накладными расходами SQLite, особенно когда вам действительно не нужны сложные реляционные запросы. - person nmaier; 11.12.2013