在开源实时Rails应用程序时,将会话密钥保密在源代码管理中是否危险?

Rob*_*her 8 git deployment open-source ruby-on-rails

我有一个已经运行了一段时间的Rails应用程序,我打算在不久的将来开源它.我想知道在应用程序运行时将会话密钥库保密在源代码控制中是多么危险.

如果危险,人们通常如何处理这个问题?我想最简单的方法是将字符串移动到SCM忽略的文本文件中,稍后再读取.

为了清楚起见,我在谈论这个:

# Your secret key for verifying cookie session data integrity.
# If you change this key, all old sessions will become invalid!
# Make sure the secret is at least 30 characters and all random, 
# no regular words or you'll be exposed to dictionary attacks.
ActionController::Base.session = {
  :key         => '_application_session',
  :secret      => '(long, unique string)'
}
Run Code Online (Sandbox Code Playgroud)

虽然我们正在研究这个主题,但在开源实时应用程序时,是否应该保护默认Rails应用程序中的其他内容?

jdl*_*jdl 2

把问题反过来。您会重复使用您刚刚下载的其他人项目中的密钥吗?可能不会,您的代码的其他聪明用户也不会。然后,恶意用户将拥有一个密钥,可用于攻击您的主站点,以及针对任何懒惰到不更改密钥的用户。

您可能拥有的其他不应共享的配置文件包括database.yml、s3.yml、amazon_s3.yml 等。如果您不会将其邮寄给陌生人,那么当您发布代码时,请勿将其保留在您的scm 中致全世界。