【问题标题】:Django/Python/Heroku: How to hide password in your code (alternatives to hardcoding)Django/Python/Heroku:如何在代码中隐藏密码(硬编码的替代方案)
【发布时间】:2014-10-28 18:46:43
【问题描述】:

我最近做了一个自定义的邮件发送功能,这里是一个sn-p:

def send_custom_email(recipient, custom_message):

    ...
    gmail_user = 'myemail@gmail.com'
    gmail_pwd = 'mypassword'
    ...

由于该项目是开源的,我不想硬核密码,因为它将公开存储在 Github 上供任何人查看。他们有什么方法可以隐藏这个密码吗?我该怎么做?示例会很有帮助。

【问题讨论】:

  • 没有好办法,你应该计划源代码中没有密码...至少存储在github上的部分并打开来源
  • 即如果它是开源的,您可能希望人们使用他们自己的 gmail 密码,而不是您的……所以您的应用程序可能应该从环境变量、配置文件或 用户提供的东西中获取密码我>

标签: python django heroku passwords password-encryption


【解决方案1】:

您可以将密码设置为应用程序环境变量的一部分。

  1. 登录 Heroku,选择您的应用。
  2. 点击设置。
  3. 添加配置变量。

这也可以通过以下方式从命令行完成:

heroku config:set YOUR_CONFIG_VALUE=whatever

请参阅:https://devcenter.heroku.com/articles/config-vars 了解更多信息。

【讨论】:

  • 这是一个很好的解决方案,谢谢。但是有一个问题,是否可以在 heroku 之外的开发环境中使用 env 变量?出于测试目的或其他目的。就像在 venv 中一样?
  • 总是乐于提供帮助。您可以查看:github.com/kennethreitz/autoenv 用于设置 per-virtualenv 环境变量
  • 这会出现在命令行上吗?这样,通过 SSH 或类似方式连接的任何用户(可能)都可以看到密码。如果您托管 IAAS,它有点是可以接受的......即使我不鼓励使用管理员可以在命令行上看到密码的服务。关于一般问题,如何在使用密码时安全地存储密码(即不可能散列)看看这个:stackoverflow.com/questions/25964435/…
  • 谢谢大家,非常有帮助。
【解决方案2】:

您可能不想以这种方式发送电子邮件。但如果你必须这样做,你应该使用 Heroku 的配置变量功能来隐藏代码库中的敏感信息:https://devcenter.heroku.com/articles/config-vars(有一个 python 示例)。

【讨论】:

  • 您如何推荐发送电子邮件?我愿意接受建议:)
  • 使用第三方电子邮件提供商发送交易电子邮件是一种很好的做法。 Mailgun 和 Sendgrid 是两个流行的。
  • 谢谢,我会去看看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-18
  • 1970-01-01
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多