Что мешает кому-то подорвать квалифицированный экспорт, притворяясь модулем, которым он не является? - PullRequest
0 голосов
/ 07 декабря 2018

Дано:

module A
{
  exports fuzzy.bunny to B;
}

Что мешает злонамеренному игроку выдать себя за модуль B, чтобы получить доступ к секретам модуля A?

Я знаю, чтоВ Java есть своего рода механизм подписи в META-INF, который позволяет каждому модулю гарантировать, что его собственные файлы классов не были изменены, но какой механизм гарантирует, что один модуль может доверять файлам классов другого модуля?

1 Ответ

0 голосов
/ 07 декабря 2018

Возможно, это не тот ответ, который вы ищете, но часть создания файла JMOD с использованием jmod инструмента объясняет это кратко:

--hash-modules

С помощью опции --hash-modules или команды jmod hash вы можете в дескрипторе каждого модуля записывать хэши содержимого модулей, которым разрешено зависеть от него, таким образом "связывая"«вместе эти модули.Это позволит вам разрешить экспорт пакета в один или несколько модулей с особым именем и ни в коем другом посредством квалифицированного экспорта .Среда выполнения проверяет, совпадает ли записанный хэш модуля с разрешенным во время выполнения;если нет, среда выполнения возвращает ошибку.

дальше от той же документации

Эти хеши записаны в создаваемом архивном файле JMOD или в архиве JMOD или модульномJAR на пути к модулю, указанному командой jmod hash.

Полезно : в общей ссылке выше также есть пример хеширования, который показываетпример использования, к которому относится ваш вопрос.

...