如何保护代码中的敏感信息

一般情况下项目会分为开发环境、测试环境、生产环境等,不同的环境有不同的数据库连接(或redis、银行账户等,此处以数据库为例),其中将生产环境的账号密码以明文的形式写入到配置文件中是极其不安全的做法。

如何保护代码中的敏感信息呢?

  1. 加密。将明文的数据通过加密的方式写入配置文件中可以初步的保护我们的账号密码不被泄露。
  2. 数据本地化。将数据库的账号密码写入到环境变量或者启动参数,亦或者诸如在web容器中添加JNDI数据库连接,都可以起到很好的保护作用。
  3. 添加配置中心。项目启动后向本环境的配置中心请求配置参数,配置中心可以根据请求者的ip或其他方式对请求者鉴权。

当然保护数据库还可以采用内网访问的方式,但对敏感信息的保护不具通用性。上面三种方式也各有利弊,比如配置中心采用token访问,则token的保护又成为新的问题,可以结合方式二,将token放入环境变量中,相对与单纯的数据本地化,配置中心可以动态的修改配置而不必重启应用,弊端则是配置中心一但挂了则全盘崩溃,具体使用哪种方式需结合相关的业务场景使用。