0

誰かがサーバーマシンにアクセスしてサーバーの実行可能ファイルを盗もうとした場合に備えて、サーバーを何らかの形で保護したいと思います。したがって、ハッカーが真のサーバー実行可能ファイルを見つけられなかった場合、ハッカーはサーバープロセスをダンプします。

そのような保護:
サーバーローダーアプリケーションがあり、サーバー自体が.netアセンブリとしてコンパイルされ
ますサーバーマシンにはこのアセンブリがほとんどありません。CD-Rに書き込み、ローダーアプリケーションの起動時に挿入し、アセンブリバイトを読み取りますCD-Rから、次にそのアセンブリから必要なクラスをロードして作成します。これにより、メインサーバーアプリケーションが起動します。
次に、ドライブからCD-Rを取り出します。

byte[] raw_assembly = File.ReadAllBytes("E:\\server.dll");
Assembly ass = Assembly.Load(raw_assembly);
Type myclass = ass.GetType("Server.Form1");
object o = Activator.CreateInstance(myclass);
Application.Run((Form)o);
raw_assembly.Clear(); //pseudo Clear... no matter how, just delete from memory
4

1 に答える 1

2

これは奇妙な質問ですが、既存のコードはほとんど問題ありません。からアセンブリをアプリドメインに読み込むことができますbyte[]。ただし、ロードされた後は、アプリケーションを実行できるように、バイトがメモリに存在する必要があります。アセンブリはいつでもbyte[]AppDomainから戻すことができます。アセンブリのバイトをRAMから削除することはできません。ただし、byte []をメモリにロードし、ファイルシステムに実際の.dllがない方が、実際にはより安全です。誰かがRAMからバイトを取り出すことはできますが、それはより困難でより複雑になります。100%安全なものはありませんが、ハッカーを苦しめることはできます。

アセンブリ内のビジネスロジックが非常に機密性が高く、誰にも手に入れられたくない場合は、ファイアウォールの背後にある会社のLAN内のマシンに配置し、インターネットにアクセス可能なマシンを設置することを検討してください。 DMZは、外部からの要求を受け取り、LAN内のロジックサーバーに要求を転送します。ハッカーがアクセスしなければならないマシンがもう1台増え、LAN内にいるのは少し難しくなります(自分が何をしているのかを知っている人がファイアウォールを設定していると仮定します)。

于 2012-06-24T16:39:52.597 に答える