Когда следует защищать ключевой файл строгого имени паролем?

В настройках проекта Visual Studio вы можете выбрать ключевой файл строгого имени для подписи сборки. При создании нового вы можете защитить его паролем. Когда вам следует это сделать? А когда нельзя?

Я думаю, что, например, было бы не так разумно защищать его паролем, если проект является проектом с открытым исходным кодом, размещенным на Codeplex или аналогичном. Или его еще надо беречь? Не смогут ли люди скачать исходный код и скомпилировать его, если ключевой файл будет защищен? Или как именно это работает?


person Svish    schedule 22.10.2009    source источник


Ответы (1)


В общем, вы должны защищать его паролем, если не доверяете людям, имеющим к нему доступ. Любой, у кого есть доступ к ключевому файлу, может создать сборку с вашим строгим именем (в отличие от Authenticode, они не выдают себя за вас, но могут получить загрузку своих сборок вместо вашей)

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

person On Freund    schedule 22.10.2009
comment
Ох. Итак, если у меня есть две сборки, подписанные ключами строгого имени. Если я затем добавлю ссылку с одного на другой, он будет работать только с тем, который был подписан правильным ключом? - person Svish; 22.10.2009
comment
Если вы ссылаетесь на сборку строгого имени, ее нельзя заменить во время выполнения сборкой, подписанной другим ключом (не совсем правильно, но давайте пока оставим более сложные вещи) - person On Freund; 22.10.2009
comment
И под во время выполнения вы имеете в виду, когда приложение запущено, а не во время его выполнения, верно? (Просто чтобы убедиться, что я правильно понял: p) - person Svish; 22.10.2009
comment
Я не уверен, что понимаю ваше различие между запуском и запуском ... Я имею в виду, что когда ссылка на сборку разрешена, выбранная сборка должна иметь такое же строгое имя. - person On Freund; 22.10.2009
comment
Мой во время работы я имел в виду замену сборки после того, как она была решена, пока приложение работало. Но я думаю, теперь я понял то, что вы имели в виду :) - person Svish; 22.10.2009
comment
Фактически невозможно «выгрузить» сборки после их загрузки, так как вы не можете выгружать сборки из AppDomain. Если, с другой стороны, у вас есть инструменты для принудительной выгрузки сборки, вы можете вместо этого использовать их для отключения проверок безопасности. - person M.Stramm; 04.08.2014