2012-03-23 32 views
2

私はs#arpを使用する小さなコンソールアプリケーションを作成しました。 コンフィグレーションマネージャを使用して実行可能ファイルを作成し、 リリースを選択することができます。私は、DLLが必要とされていることを理解し、 は、「バインド」への簡単な方法は明らかに存在しないことを1つの実行可能ファイルにすべてのもの(?):(1)リリース実行可能ファイル

SO link

は、少なくとも非表示にする方法があります:

NHibernate.config

DBの接続文字列は隠されていますか? asp.netのWeb.configを暗号化することが可能であることを覚えています。 おそらく同様のものが ですか?

フィードバックは非常に高く評価されます。事前に多くの感謝。

+0

セキュリティ上の理由から非表示にしたいですか?もしそうなら、それはセキュリティの欠陥です。データベースに直接アクセスできるユーザーを信頼しない場合は、データベースに直接アクセスしないでください。誰かが細部をつかんで接続しないようにしたいのであれば、リンクの詳細を難読化するのではなく、APIを作成するのが理想的です。 – Corbin

+0

プログラムは、いくつかの番号のクランチを行い、データベースにアクセスする必要があります。プログラムは異なるユーザーのマシンで実行されます。彼らは実際にデータベースのユーザー名とパスワードを見ることはできません。 – cs0815

+0

まあ、特定のユーザーのために、彼はそれらを見つけることができるでしょう。暗号化されていても、ある時点でデータを復号化して接続コールを行う必要があります。卑劣なユーザーは、呼び出されようとしていた場所を見つけ、メモリからユーザー/パスを取得できます。非常に難しいですが、そこには数分でできる人がたくさんいます。 – Corbin

答えて

3

あなたが解読するために、コードで接続文字列プロパティを設定する必要があり、SharpArchは、あなたの設定にプロパティを追加することができます以下の過負荷提供:どこ復号化方法DecryptConnectionString(

NHibernateSession.Init(
       sessionStorage, 
       new[] { Server.MapPath("~/bin/Suteki.TardisBank.Infrastructure.dll") }, 
       new AutoPersistenceModelGenerator().Generate(), 
       Server.MapPath("~/NHibernate.config"), 

       // You can get all the values from your config and use here, 
       // if you dont want a config file at all, or just decrypt the 
       // connection string and provide that value dictionary: 
       new System.Collections.Generic.Dictionary<string, string> 
        { 
         { 
          NHibernate.Cfg.Environment.ConnectionString, DecryptConnectionString() 
         } 
        }, null); 

を)どこから接続文字列を取得しますあなたは、app.configまたはハードコードされた文字列から暗号化された設定セクションであることが好きです。コービンとして

は、あなたがこれを配布しようとしているならば、私は直接DBに接続していないになり、これは、接続文字列を把握する平均ジョーのために、それはより複雑になりますが、それを行うことができる、と述べました。

1つの実行ファイルにDLLが含まれているようにするには、ILMergeを参照してください。

+0

ちょうど興味があります - どのようにデータベースに直接接続せずに何らかのデータベースアクセスが必要なexeを配布していますか?どのポインタも非常に高く評価されます。ありがとう。 – cs0815

+0

これは本当にアプリケーション/使用方法に依存します。社内でのみ展開されるアプリケーションは、エンドユーザーがマシンにダウンロードするものとは異なる制約を持ちます。過去にこのようなことを実装した場所では、wcfサービスを通じてデータを取得しました。 –

+0

それは家にいるでしょう。 – cs0815

関連する問題