Day 28 - 重要的钥匙要藏好

越接近完赛越害怕自己今天到底发文了没!这几天早中晚都会反覆确认有没有发文,毕竟坚持30天写技术文章那麽久,不得不担心功亏一篑呢 XD

今天要介绍的是很方便和常用的套件。学写程序之後才知道有很多眉角,比方说用 Git 做版本控制,然後推上 GitHub ,除了基本的版控,团体协作也很方便。但是专案中总是会有比较机密敏感的资讯,尤其是使用者名称和密码、金钥等,如果是自己在本地操作就算了,一旦推上 GitHub,很快就会被扫描到,被有心人士窃取又更麻烦了。为了安全性的问题,所以才有了 Figaro 套件。利用 gitignore,把敏感资料存成环境变数,整理成一个档案,让 Git 忽略这个档案,不加入版控之中,而环境变数可以在专案全域中取用,达到保护机密资讯的作用。

Figaro 在应用程序中解析一个忽略 Git 的 yaml 文件,并将其值加载到中ENV。

起手式,安装套件

先到 RubyGem 寻找 figaro,然後回到专案 Gemfile 加入:

# Gemfile

gem 'figaro', '~> 1.2'

也别忘记:

$ bundle install

接着下这个指令会在 config 资料夹中长出一个档案application.yml,并且加入到.gitignore

$ bundle exec figaro install

把重要资讯放进application.yml

先打开刚刚产生的档案,有给一些范例:

小提醒:ENV 是的储存方式是一个简单的 key / value。所有值都将转换为字串。深度巢状的配置结构是不可能的。

特定环境

本地配置的数据会根据 Rails 的环境去改变。也就是可以设定不同环境下,给予不同的设定:

pusher_app_id: "2954"
pusher_key: "7381a978f7dd7f9a1117"
pusher_secret: "abdc3b896a0ffb85d373"

test:
  pusher_app_id: "5112"
  pusher_key: "ad69caf9a44dcac1fb28"
  pusher_secret: "83ca7aa160fedaf3b350"
  
development:
  pusher_app_id: "1234"
  pusher_key: "ad69cbe8b33dcac1fc89"
  pusher_secret: "94cd8bb160fedaf3b461"
  
 production:
  pusher_app_id: "9999"
  pusher_key: "cd69aef9a26dcac1fb34"
  pusher_secret: "98ca7aa173fedaf3b664"

补充:yaml wiki

当需要使用时

在程序码中输入 ENV[...],即可得到在设定档案中配置好的密码

ENV["pusher_secret"]

这是我最近参与的专案:

把帐户、密码、连结等存在这里,用法很简单,却提升很多安全性问题喔!

今天的一切,都是为了明天的一小部分!

参考资料:
使用figaro管理密钥
使用 Carrierwave 与 Figaro套件,在Heroku 部署 Rails 专案结合 AWS S3 存放上传图片

学无止尽,每天都要进步一点点!


<<:  Day29-台湾菜鸟工程师除错之卷四

>>:  【Day.28】React进阶 - 导入Redux,让元件沟通更简洁

【从实作学习ASP.NET Core】Day21 | 前台 | 用检视元件建立选单

今天要进一步完成商店页面,会用到 ViewComponent 来完成类别选单 ViewCompone...

D2: [漫画]工程师太师了-第1.5话

工程师太师了: 第1.5话 杂记: 因为这是IT铁人赛,总是希望可以有些技术的。 我会在D2、D4、...

Day 21 ATT&CK for ICS - Discovery(1)

攻击者针对 ICS 环境寻找有用的资讯,这些资讯包含 ICS 网路内 IP 、Hostname,可以...

Youtube Analytics API 教学  -  期待多元性别出现 'gender' 维度

「鲑鱼均,因为一场鲑鱼之乱被主管称为鲑鱼世代,广义来说以年龄和脸蛋分类的话这应该算是一种 KNN 的...

必然 (2) 形成ing - Becoming

永远的新手模式 「形成ing」的基本概念 科技生活是一连串的升级, 不论一种工具用了多久,无尽的升级...