0

VisualStudio2010とMicrosoftAccess2010を使用して、C#プログラミング言語を使用したデスクトップアプリケーションを開発しています。

接続文字列は次のとおりです。

connectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = | DataDirectory | \ KBank.accdb; Persist Security Info = False"

そして私はそれに次のようにC#コードでパスワードを与えます:

 public string GetConnectionStringByName()
    {
        string returnValue = null;
        ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings["Info_Bank_Project.Properties.Settings.KBankConnectionString"];
        if (settings != null)
            returnValue = settings.ConnectionString + ";Jet OLEDB:Database Password=blablabla";
        return returnValue;
    }

プロジェクト内のデータベースを1つの単純な「選択」クエリで使用しました。

それで、セキュリティの問題に関して..誰かがアクセスデータベースを復号化するか、パスワードを見ることができますか?そして、誰もがデータベースデータを見るのを難しくするためのあなたの提案は何ですか

4

3 に答える 3

3

いいえ、データは安全ではありません。MSILデコンパイラを使用してコードを検査し、アプリから接続文字列を取得できるためです。プロセスのある時点で、パスワードがメモリ内にあるか、リフレクションにあるか、または他の何かに関係なく、誰かがそのパスワードを見る可能性があるポイントがあります。

サーバーではなく、自分以外の誰かが所有しているデータがある場合は、そのデータを制御できなくなったと見なすことができます。

さて、そうは言っても、データベースファイルを暗号化し、コードを難読化することで、彼らがアクセスしにくくすることができます。

于 2012-08-27T03:57:29.137 に答える
3

これは少し古いスレッドです。この問題に関する私の経験は誰かを助けるかもしれません。内部に強力なパスワードを使用してC++DLLを作成し、それをC#アプリから呼び出して、データベースファイル名を使用してメソッドを暗号化/復号化できます。

于 2013-12-20T16:28:21.090 に答える
1

app.configにパスワードを入力して、app.configを暗号化してみませんか。

こちらをご覧ください

于 2012-08-27T04:13:36.840 に答える