2011-01-31 16 views
4

これからは、強力な名前でコンパイル結果に署名するために使用される.snkファイルを含むサンプルプロジェクトがネットワーク上に表示されます。.snkファイルをプロジェクトソースとともに出荷する理由は何ですか?

AFAIK this is plain wrong - 一度.snkファイルが公開されると、元のコード提供者が出荷したが悪意のあるコードを含むアセンブリを置き換えるために使用できるアセンブリを誰でも作成できます。私は、.snkファイルを運ぶ人々は、そのリスクを真剣に処理せず、そうでなければプロジェクトが既製品にコンパイルされないため、ファイルを出荷すると思います。

「便宜」以外の.snkファイルを出荷する理由はありますか?

答えて

3

非常に有効な質問です。私はmypartのためにSNKファイルを出荷しませんが、provide instructions自分で生産し、必要な変更を加える方法(例えばInternalsVisibleToを有効にする)をしてください。

VS2005から始まるSNK処​​理の変更を私のMicrosoftに押し付けていると思います。キーコンテナを使用すると、文書化されていないMSBUILD項目KeyContainerNameを使用してCSPROJファイルを手動で編集する必要があります... VSのデフォルトは、プロジェクトディレクトリにSNKをコピーするのが便利ですが間違ったIMHOです。

1

少なくとも、プライベートキーと公開キーペアを一緒に出荷する理由はわかりません。ソースコードを出荷する必要がある場合は、アセンブリに署名するために必要なパスワードを使用してセキュリティが強化された.pfxを使用することもできます。

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

2

唯一の理由は、あなたのdllのためのドロップイン交換を可能にすることです...

もちろん

、通常、私はあなたがドロップする場合は、あなたのdllに署名していない」と言うだろう代わりに。 GACにインストールされている場合は署名が必要です。 (または、私が知っていた最後の時間でした)。

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

+0

強力な名前は必須です:署名されていないアセンブリを参照するアセンブリに署名できないため、署名されていないアセンブリのチェーンが作成されます。署名されていないアセンブリでは、バージョンはAFAIKのどちらかにチェックされていないため、DLL地獄のドアを再び開いているため、非常に安全ではありません。 – Lucero

+0

十分にはっきりしていますが、人々がクライアントに変更を加えずに使用できるようにしたい場合を除き、snkファイルを発送する理由はありません。もちろん、この時点でバージョン管理は別の問題になります。 – Massif

+0

私はそれに完全に同意します。SNKは私にとっては無駄です(詳細は私の答えを見てください)。 – Lucero

関連する問題