7

log4j.properties でパスワードを暗号化する方法はありますか

以下は私のアペンダーです

log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.URL=jdbc:mysql://localhost:3306/anilpractice
log4j.appender.DB.driver=com.mysql.jdbc.Driver
log4j.appender.DB.user=root
log4j.appender.DB.password=P@ssw0rd
log4j.appender.DB.sql=INSERT INTO logs VALUES('%x','%d{dd MMM yyyy HH:mm:ss}','%C','%p','%m')
log4j.appender.DB.layout=org.apache.log4j.PatternLayout

.password タグを暗号化する方法を教えてください。

皆さん、ありがとうございました。

4

2 に答える 2

2

それは不可能だと思います。可能性がある場合でも、次の点を考慮してください。

「暗号化されたパスワード」を提供するだけで接続を確立できる場合、暗号化されたパスワードをコピーするすべての人が接続してデータベースを危険にさらす可能性があるため、パスワードが暗号化されていないようです。唯一の違いは、パスワードが別の方法で提示され、人間が読める可能性は低いかもしれませんが、それでも十分に役立つことです。コードにパスワードの対称的な暗号化解除を実装したとしても、攻撃者が暗号化されたパスワードを含む構成ファイルにアクセスできる場合、暗号化解除アルゴリズムを含む同じマシンで実行されているコードにもアクセスできる可能性が非常に高く、アルゴリズムを逆コンパイルして読み取ることができます。

ロギング テーブルへの書き込みのみに制限されたアクセス権を持つ DB ユーザーを作成することをお勧めします。このようにして、盗まれたパスワードがデータベースに大きな損害を与えることはありません。

于 2014-04-04T12:11:33.423 に答える
2

神に感謝します

私たちがしなければならないことは、

JDBCAppenderlog4j.jar のクラスを複製します。

の定義を修正する

public void setPassword(String password)
  {
          this.databasePassword = password;
  }

JDBCAppender

必要に応じて、log4j.jar でそのクラスを置き換えます。

于 2014-04-08T12:48:52.547 に答える