我正在制作一个宝石来包装 API。该服务需要一些登录参数,因此我创建了一个 Connection 类,通过传入所有登录值并与实例变量一起存储来进行初始化。@secret_access_key显然,这些价值之一是秘密的。它在应用程序中不可读。但是在 irb 中测试 gem 时,我看到在返回对象时与所有其他实例变量一起显示的密钥。
mws = MWS::Connection.new :access_key => '1', :secret_access_key => 'SECRET!!!', :merchant_id => '3', :marketplace_id => '4'
=> #<MWS::Connection:0x007fbd22acef40 @access_key="1", @merchant_id="3", @marketplace_id="4", @secret_access_key="SECRET!!!">
Run Code Online (Sandbox Code Playgroud)
我很担心密钥会出现在 Heroku 日志、应用程序错误消息或其他任何内容中。
我应该担心吗?如果是这样,存储或隐藏此信息的最佳方法是什么?
另外,我正在使用 httparty gem 来管理这个,我可以用那个 gem 做些什么更好的事情?
您可以使用此解决方法:
class MWS::Connection
def inspect
"#<MWS::Connection:#{object_id}>"
end
end
Run Code Online (Sandbox Code Playgroud)
当然,密钥仍然可以访问,但它现在不应该出现在任何日志中:
mws = MWS::Connection.new :access_key => '1', :secret_access_key => 'SECRET!!!', :merchant_id => '3', :marketplace_id => '4'
# => #<MWS::Connection:0x007fbd22acef40>
mws.instance_variable_get(:@secret_access_key) # => 'SECRET!!!'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1962 次 |
| 最近记录: |