0

使用 Ktor 作为 Web 服务器并使用 (HOCON) application.conf 文件对其进行配置。

我已经在配置中设置了用于连接数据库的默认密码,以及使用环境变量覆盖它的能力。

当服务器启动时,配置会打印到控制台(并且将来可能存储在日志中),问题是密码是显而易见的。

有谁知道防止这种情况的方法?

代表application.conf:

ktor {

    deployment {
        port = 8080
        port = ${?PORT}

        databaseUrl = ${?DATABASE_URL}
        databaseUser = ${?DATABASE_USER}
        databasePassword = ${?DATABASE_PASSWORD}
        ...
    }
}

示例服务器输出

...
# env var DATABASE_PASSWORD
"databasePassword" : "mysecretpassword",
# env var DATABASE_URL
"databaseUrl" : "jdbc:postgresql://localhost:5432/postgres",
# env var DATABASE_USER
"databaseUser" : "postgres",
...
4

1 回答 1

1

您可以将带有敏感值的参数放在该security部分中,以使它们隐藏在日志中。这是一个例子:

ktor {
    deployment {
        port = 8085
        port = ${?PORT}
    }

    security {
        databaseUrl = ${?DATABASE_URL}
        databaseUser = ${?DATABASE_USER}
        databasePassword = ${?DATABASE_PASSWORD}
    }

    application {
        modules = [ com.example.ApplicationKt.module ]
    }
}
于 2020-12-10T13:18:58.820 回答