我在哪里放置Stripe的可发布和密钥?

Ste*_*nou 3 ruby-on-rails stripe-payments

我在开发环境中工作.

我在/ config/initializers下有一个stripe.rb文件,其内容是:

Rails.configuration.stripe = {
  :publishable_key => ENV['PUBLISHABLE_KEY'],
  :secret_key      => ENV['SECRET_KEY']
}

Stripe.api_key = Rails.configuration.stripe[:secret_key]
Run Code Online (Sandbox Code Playgroud)

我试图将它们放在那里(在ENV ['key-here']中)但是Stripe不能识别它们并返回错误.

为了使它工作,我在启动我的rails服务器之前传递它们:

PUBLISHABLE_KEY=pk_test_XXXXXXXXXXXXX SECRET_KEY=sk_test_XXXXXXXXXXXX rails s
Run Code Online (Sandbox Code Playgroud)

我在哪里将这些值放在我的Rails应用程序中?(因为我将很快在生产中部署)

谢谢

Mar*_*tin 6

我在哪里将这些值放在我的Rails应用程序中?

你没有.

您不希望它们出现在您的源代码中,因为任何有权访问您的源代码的人都可以访问您的Stripe帐户(并开始让您的客户付费......).

它们应该在服务器上的环境变量中.如果这对您来说不方便,您可以查看figaro,它可以帮助您处理敏感信息.

请注意,如果您的yml文件不是由您编写的(例如,如果注入了某些内容),则存在一定的安全风险(有人可能会在那里注入恶意代码).您可以使用safe_yml来防止这种风险.

最后,如果要在Heroku上进行部署,则可以在那里配置可供应用程序使用的变量.

  • 是的,这就是主意.Figaro第一个敏感数据的例子是Stripe键,我想.如果您已经使用它并拥有application.yml,只需在那里添加Stripe密钥即可.Figaro magic会将它们注入ENV中,因此您可以使用它们,就像使用OS环境变量设置它们一样. (2认同)