目前比較有在動的 project 都是在 private network 裡跑的,使用者也不多,所以一直沒特別注意安全性的問題,真是不太好的習慣啊!趁著這次 OpenSSL bug 的機會,研究一下 Ruby on Rails App 的安全性設定。
secret_token.rb
secret token 基本上不能暴露出來,也不能重複,如果是 clone 別人的 project,也要記得改個新的。因此,不要讓 secret_token.rb
進到 repository 裡(加入 .gitignore
),然後把既有的 app 打一把新的 token:
rake secret
database.yml
database.yml
存了後端資料庫的一些連線設定,當然也不能讓外人知道。雖然我都用 SQLite 檔來存,基本上沒什麼連線設定的問題,但為了以後可能改用其他 db,也趁機處理一下。
一樣放到 .gitignore
裡不要進 repository。
如果用 capistrano 來 deploy 的話,可在 deploy.rb
的 namespace :deploy
中進行 database.yml symlink:
task :symlink_db, :roles => :app do
run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
end
task :symlink_secret_token, :roles => :app do
run "ln -nfs #{shared_path}/config/secret_token.rb #{release_path}/config/initializers/secret_token.rb"
end
在 callback 部分加入
before 'deploy:assets:precompile', 'deploy:symlink_db'
before 'deploy:assets:precompile', 'deploy:symlink_secret_token'
接著把 secret_token.rb
和 database.yml
放到 production server 上的 #{shared_path}/config
目錄中。
以上。收工。