2016-03-27 3 views
1

私は複数のコンピュータに書き込んだソフトウェアをいくつかの異なる場所にリリースしようとしています。プログラム自体はWindowsフォームアプリケーションです。それをインストールするには、私も完全に正常に動作するセットアッププロジェクトを追加しました。すべてのファイルが正しいフォルダにコピーされ、インストール作業中にユーザーが間違いなく選択できるようになります。しかし、設定ファイルなしでビルドを解除する

唯一の問題は、たとえばSQL接続文字列のような意味のあるデータを含む設定ファイルも、ターゲットコンピュータにコピー/インストールされるということです。

このデータをアプリケーションで読み取れないように保存する方法はありますか? すべてのヘルプは感謝

...アプリケーションは、難読化されますので、私はちょうどクラスでそれを書くことについて考えたが、私は、これは十分に安全であると、これは本当に進むべき道である場合かどうかわからないんだけど!

+0

** - **アプリケーションの重要な部分 ** **接続文字列のような設定と構成。 ** **ビジネスロジックと検証ルール。 **•**データと機能にアクセスする権限。 ** - **難読化に依存している場合、機密データをアプリケーションコードまたは暗号化された設定ファイルに保存できます。難読化は、ハッカーにとって難しくて凹凸になります。しかし、アプリケーションにさらに保護を加えたい場合は、サーバー側のソリューションを検討する必要があります。 –

答えて

0

あなたはプログラムを逆コンパイルしてconection Stringを検索することができるので、プログラムに対しては設定ファイル/データは読み込みできませんが、ユーザにとっては不可能です。 また、リクエストをチェックするPHPスクリプトなどを書くこともできます。スクリプトがユーザーのスパムを要求したり、ゴミデータを送信した場合は、特定のipsからのリクエストをブロックできます。 ユーザーが接続文字列で悪いことをする機会を持たないように、書き込み権限と読み取り権限に制限のある新しいデータベースユーザーを作成するだけで十分です。

+0

質問は、ユーザーがプログラムを逆コンパイルして接続文字列を取得すると思われるかどうかです。あなたがコードにそれを書くならば、答えはいいえではない。 – Lin0815

0

難読化スキームを使用して、コード自体に埋め込まれた秘密鍵で機密ファイルを暗号化して保護する場合があります。これは、リビルドテストを必要としないため、すべての機密設定データをコードに埋め込むほうがよいでしょう。設定だけが変更されたときにアプリケーションをテストリリースする必要があります。

理論的には、ユーザーモードで実行されているアプリケーションでは、プレーンな機密データにアクセスすることができます(ユーザーは難読化、メモリダンプなど)。機密データの生成や解読に必要なすべての情報はオフライン(コード、ディスク、メモリ)に存在するため、十分なスキルを持っていれば、コード(機械コードさえも)を調べることによって解読スキームを決定できます。

アプリケーションを迅速な計算と膨大なメモリスキルを持つユーザーとして実行することで、即座にコードを難読化し、「安全な」データを復号化するために必要な計算を行うことができます。

関連する問題