2017-11-24 8 views
0

ライセンスなどのアプリケーションのセキュリティを検証するために使用するアセンブリがあります。 アプリケーションが検証メソッドを呼び出すたびに、これが正しいアセンブリから読み込まれるようにするにはどうすればよいですか? 私は、誰かがこれらの検証をバイパスするための偽のアセンブリを作成しないようにしたいと思います。アプリケーションが正しいアセンブリをロードすることを知るにはどうすればよいですか?

強い名前付きキーを取得するために.snkを追加すると、これで問題は解決しますか?

など。私のアプリケーションでMySecurity.dllを使用している場合、誰かが同じ名前のアセンブリを作成してbinフォルダに上書きすると、これは正しいアセンブリではないことが私のアプリケーションにわかりますか?

私たちのソリューションでは、公的証明書とライセンスファイル(インターネットが接続されている場合)を使用してローカルの2種類の検証を使用しているため心配です。しかし、これらのどれも簡単にバイパスすることができます。あなたは、ハード(多分タイマーで)

をあなたのコード内でそのDLLファイルのハッシュ文字列をコード化し、実行時にそれを確認することができます

enter image description here

+0

この場合、厳密な命名メカニズムが存在します。 – Gusdor

+0

@Gusdor Noではありません。エンドユーザーが[コマンドラインで無効にする]ことができなかった場合(https://blogs.msdn.microsoft.com/securitytools/2009/12/30/how-to-turn-off-strong-名前の検証/)。複数のベンダのアセンブリの名前の衝突を防ぐために、厳密な名前が付けられています。 –

+0

@ScottChamberlain Integrityは、ドキュメント内で具体的に呼び出されています。https://docs.microsoft.com/en-us/dotnet/framework/app-domains/create-and-use-strong-named-assemblies – Gusdor

答えて

-1

また、あなたは、いくつかのことで、あなたのアセンブリを保護する必要がありますこのようにEazfuscator.NET

+0

Authenticodeの署名が、それを確認する最も良い方法です。 assembly.loadイベントで、アセンブリが期待される証明書によって署名されていることを確認します。 OP authenticodeへの注記と強力な名前署名は、2つの異なるメカニズムです。 –

関連する問題