启用Oracle JDBC诊断跟踪(使用ojdbc8_g.jar)时,结果跟踪输出将以明文形式显示连接用户的密码。是否可以配置诊断功能,以便不记录密码?
示例输出:
527 [10/29/19 14:00:09:770 AEST] 000001f1 id=00000000 oracle.jdbc.pool.OracleDataSource 3 getPhysicalConnection 1FF949C5 Enter: {user=oracle_user, password=passw0rd, connection_url=jdbc:oracle:thin:@//10.0.0.26:1521/TESTDB}
答案 0 :(得分:0)
是否可以在Oracle JDBC诊断跟踪中隐藏用户密码?是的,但是只能通过严格限制跟踪中的内容,包括不将SQL文本放入跟踪中。不是说禁用跟踪,而是限制要跟踪的内容。
在最新发行版(18c或更早版本)中,Oracle JDBC故意不将密码放入跟踪文件中。 但是,当驱动程序不知道数据是密码时,它会将密码放入跟踪文件中。最明显的例子是SQL文本。驱动程序在许多地方都将SQL文本放入跟踪文件中。但是SQL文本可以包含密码:ALTER USER ... IDENTIFIED BY ...。驱动程序不知道SQL文本包含密码。还有许多其他路径将密码添加到跟踪文件中,但是驱动程序不知道特定的值是密码,例如字符集转换。