5

次のように、コンピュータサーバーのMySQLデータベースに正常に接続するJDBCを使用してJavaプログラムを作成しました。

    try
    {
        // The newInstance() call is a work around for some
        // broken Java implementations

        Class.forName("com.mysql.jdbc.Driver").newInstance();
    }
    catch (Exception ex)
    {
        // handle the error
    }

    try
    {
        conn = DriverManager.getConnection(("jdbc:mysql://191.168.1.15:3306/databasename"), "username", "password");

        // Do something with the Connection
    }
    catch (SQLException ex)
    {
        // handle any errors
        System.out.println("SQLException: " + ex.getMessage());
        System.out.println("SQLState: " + ex.getSQLState());
        System.out.println("VendorError: " + ex.getErrorCode());
    }

ただし、パスワードを把握したい人は、Javaデコンパイラーを使用すれば非常に簡単です。どうすれば、彼らがパスワードやユーザー名を見つけられないようにすることができますか?

4

6 に答える 6

10

ユーザーにデータベースへの直接アクセスを許可する場合は、データベースへの直接アクセスをユーザーに許可したことを覚えておく必要があります。それを変更することはできません。暗号化や難読化の量は、彼らがあなたのデータベースにアクセスできることを奪うことはできません。

それで、あなたは考慮する必要があります、あなたは本当に彼らにあなたのデータベースへのアクセスを持たせたいですか?

  • データベースへのアクセスを許可する場合は、アクセス許可が正しく設定されていることを確認してください。たとえば、読み取りアクセスのみが必要な場合は、指定したユーザーが読み取りアクセスのみを持っていることを確認してください。

  • 実際にデータベースに直接アクセスしたくないが、データ にアクセスできるようにしたい場合は、プログラムにデータベースのパスワードをまったく入力しないでください。たとえば、データベースの前にWebサービスを設定し、ユーザーにWebサービスを照会させることができます。Webサービスにはデータベースパスワードがありますが、ユーザーにはありません。

于 2012-07-08T07:19:26.557 に答える
1

あなたはそうしない。これが静的パスワードが悪い理由です。

通常、エンタープライズ環境で行うことは、外部認証方法(LDAP、Active Directoryなど)を使用してデータベースに対して認証し、次にグループを使用して、ユーザーが必要とするアクセスのレベルを決定することです。

MySQLは外部認証方法をサポートしています。MSSQLServerも同様です。

于 2012-07-08T07:23:43.300 に答える
0

jdbc文字列を、コンパイルされたクラスやjarファイルとは別の構成ファイルに移動します。このようにコードを配布する場合は、構成ファイルも必要になります。

于 2012-07-08T07:19:36.163 に答える
0

それはあなたのアプリケーションに依存します。この情報を非表示にする場合は、WebサービスまたはWebアプリケーションを構築できます。このデータは安全です。それ以外の場合は、通常、データベースへのアクセスを望まないため、独自のデータベースを構成する必要があります。

それ以外の場合は、データベースへのアクセスを許可し、そのユーザーは必要な権限を持っている必要があり、データベース内のすべてのアクションを確認する必要があります。

于 2012-07-08T07:20:59.713 に答える
0

これを行う唯一の方法は、暗号化されたパスワードを使用して、それを別のファイルに保存することです。逆コンパイルするには、Webサービスを使用します。

または、はるかに優れた方法です。ユーザーにコードを知られたくない場合は、Webサービスを介して完全なアプリケーションを作成します。これにより、クライアントは外部APIにアクセスできるようになり、ビジネスロジックjarをクライアントマシンに配置する必要がなくなります。これがケースを達成するための最良の方法だと思います。

于 2012-07-08T07:29:51.663 に答える
0

クエリの後にjsonまたはxmlを返すプロキシを使用することをお勧めします。これにより、サーバー側からセキュリティを組み込み、ハニーポットトラップを設定し、クエリ用に独自のエンコーダデコーダーを構築し、https経由で送信してリスナーを防ぐことができます。

また、ユーザー名とパスワードを文字列に格納し、変数として渡すこともできます。次に、類似したものの複雑なマトリックスを構築し、それを使って一見複雑なことを行い、ハッカーをすり減らして、コードを見つけようとして2時間後に興味を失います。

プラットフォームに応じて、ネイティブライブラリのdllまたは.soにパスワードを入力することも検討できます...

問題は解決せず、ハッカーはあなたのコードを実装するだけでよく、彼は本格的なアクセス権を持っているので、プロキシを強くお勧めします。

于 2012-07-08T07:32:44.707 に答える