2009-08-25 16 views
1

.NETで実行可能な単純なCRUDアプリを持っている場合、ユーザーがそれをRedGate Reflectorに読み込んで、db接続文字列、パスワードなどのすべての内容を表示できないのはなぜですか?.NET実行ファイル内の詳細を隠すにはどうしたらいいですか?

これを何らかの形で保護することはできますか?

+5

実行ファイルに接続文字列とパスワードを格納することで問題が発生することがあります。 –

+0

この質問はSOに何度も繰り返し尋ねられています。難読化を探してください。 –

+1

C++であなたのアプリケーションを書き直すと、リフレクターはそれを読み込めません。;) –

答えて

0

Obfuscationはオプションです。しかし、私はあなたが隠すことはできないと思います。パスワード文字列は完全にそれは本当に危険です。

1

難読化(難読化、文字列の暗号化など)はできますが、ユーザーが実行可能ファイルにアクセスできる限り、リバースエンジニアリングすることは決してできません。

3

いいえ、できることは、アセンブリを難読化して読みやすく理解することですが、ReflectorまたはILDASMを使用してアセンブリ内のILを表示しないようにする方法はありません。

CLRがこのアセンブリを読み取ることができる必要があることを覚えておいてください.CLRがアセンブリを読み取ることができれば、他の誰でも読み取ることができます。ユーザーは、接続するユーザーが何ができるかを制限、および/またはユーザが相互作用することができるように指定することができ、そこから制限ユーザー、リミット・マシン:DB接続文字列を含む

1

は、データベースエンジンでのセキュリティを定義

パスワード定義された "ストアドプロシージャ"を介してのみデータベースを使用します。

1

保護する内容によって異なります。

パスワード付きのDB接続文字列の場合は、パスワードを保存しないでください。例:IIS App Poolを設定して、限定されたサービスアカウントを実行してデータベースと信頼できるセキュリティを設定します。まともなデータベースセキュリティを前提とすると、servernameなどの知識は役に立たない。

2

難読化は決して正しい答えではありません。たぶんあなたはこれを間違った方向に向かっているでしょう。

接続文字列が利用できないか、重要ではないという考え方がいくつかあります。

データベースへの接続文字列がWebサービスにしか認識されないように、データベースをWebサービスの背後に置くことができます。もちろん、ログイン資格情報の使用など、Webサービスへのアクセスを制限する別の方法が必要です。

または、各ユーザーに独自のSQLログイン名/パスワードを与えることができます。そうすることで、彼らは自分のユーザーID /パスワードを知ることができますが、データベースから "オフにする"ことは簡単です。これはまた、アクセスするテーブル/ビュー、アクセスのタイプなど、データベース自体への各人のアクセスをよりよく制御できます。

1

ハッシュテーブルまたはXMLにパスワードと接続文字列を入力してデータを暗号化し、画像の後ろにある中止機能で隠されたテキストファイルにパスワードを隠したzipファイルを作成できます。すべての解凍と読み込みは、読み込みを行った後にメモリに保存し、メモリをフラッシュし、接続文字列を使用した後でコレクタを呼び出し、変数を消去します。必要なデータのみをメモリに保存し、ラムの使用には注意してください。

+0

良いアイデア。次回は、答えを出すことで少し読みやすくしてみてください。 – thomasfedb

関連する問題