5

時々、強い名前でコンパイル結果に署名するために使用される.snkファイルを含むサンプルプロジェクトがネットワーク上に表示されます。

ちなみに、これは明らかに間違っています。.snkファイルが公開されると、元のコードサプライヤから出荷されたが、現在は悪意のあるコードが含まれているアセンブリを置き換えるために使用できるアセンブリを誰でも作成できます。.snkファイルを出荷する人は、そのリスクを真剣に扱っておらず、ファイルを出荷するだけだと思います。そうしないと、プロジェクトが既成でコンパイルされないためです。

「便利」以外に.snkファイルを発送する理由はありますか?

4

3 に答える 3

3

非常に有効な質問です。私はSNKファイルを出荷ていませんが、自分 でSNKファイルを作成し、必要な変更を加える方法(たとえば、有効にする方法)を提供しています。InternalsVisibleTo

現在の慣行は、VS2005以降のSNK処理の変更により、Microsoftにプッシュされたと思います。キーコンテナを使用するには、ドキュメント化されていないMSBUILDアイテムを含むCSPROJファイルを手動で編集する必要がありますKeyContainerName... VSのデフォルトでは、SNKをプロジェクトディレクトリにコピーします。これは便利ですが、間違ったIMHOです。

于 2011-01-31T12:11:10.740 に答える
2

私が考えることができる唯一の理由は、dllのドロップイン置換を許可することです...

もちろん、通常は「ドロップイン置換が必要な場合はdllに署名しないでください」と言います。ただし、GACにインストールされている場合は、署名が前提条件です。(または、前回私が知っていた)。

したがって、GACにインストールされているdllの置き換えを許可します。私が考えることができる唯一の合理的な理由です...

于 2011-01-31T12:11:52.723 に答える
1

少なくとも、プライベートキーペアとパブリックキーペアの両方を一緒に出荷する理由はわかりません。ソースコードを出荷する必要がある場合は、代わりに、アセンブリに署名する必要があるパスワードによってセキュリティが向上した.pfxを使用することもできます。

とにかく、多くのオープンソースプロジェクトでは、.snkファイルをソース管理に追加するのが一般的な方法(悪い習慣)のようです。とても良い質問です!

于 2011-01-31T12:11:19.893 に答える