【问题标题】:Best way to save password constant保存密码常量的最佳方法
【发布时间】:2021-11-10 00:21:25
【问题描述】:

我的应用程序使用库将电子邮件发送到预定义的邮箱。 在我的常量文件中,我定义了我的 smtp 主机、smtp 用户名和 smtp 密码。 问题是,密码是纯文本的。 我怎样才能安全地存放它? 这是我的Constants.kt 文件的预览:

const val SMTP_HOST = "smtp.gmail.com"
const val SMTP_USER = "test@test.com"
const val SMTP_PASSWORD = "123456"

【问题讨论】:

  • “我的应用程序使用库将电子邮件发送到预定义的邮箱”——任何人都可以从您的应用程序中提取此信息并将其用于恶意目的。要么使用ACTION_SEND/ACTION_SENDTO,要么按照one answer 的建议,让一些Web 服务发送电子邮件,让您的应用与Web 服务安全通信。

标签: android kotlin


【解决方案1】:

在我看来,更安全的方法是取消绑定这个“前端”,让应用程序使用来自后端的服务并负责处理这封电子邮件。在后端,您将密码作为环境变量或在某个数据库中加密

【讨论】:

    【解决方案2】:

    更好的方法是将密码存储在环境变量中并加载:

    val SMTP_PASSWORD = System.getenv("PASSWORD")

    此外,该主题已在 SO 上进行了广泛讨论(例如,here)。

    【讨论】:

    • System.getenv() 在 Android 中不是一个选项。它也没有解决真正的问题:任何人都可以提取电子邮件凭据并将该帐户用于垃圾邮件、网络钓鱼等。
    【解决方案3】:

    您可以将敏感信息保存在 .env 文件中,并且不应将其发送到版本控制系统并在暂存/生产区域进行更改。

    【讨论】:

      猜你喜欢
      • 2021-12-17
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多