Best practices for Rails application secrets
mainTo prevent vulnerabilities such as session hijacking, cookie forgery, or unauthorized data decryption, follow these security rules for managing application secrets (e.g., secret_key_base, API keys, OAuth secrets, and database credentials):
- Never hardcode secrets: Avoid patterns like
SECRET_KEY_BASE = "hardcoded_value"as they leak via Git history. - Use secure storage: Use environment variables or the Rails Encrypted Credentials system.
- Protect the master key: If using encrypted credentials, ensure
config/master.keyis added to your.gitignoreand never committed. - Rotate secrets regularly: Ensure secrets can be changed without requiring application code changes.
- Restrict access: Limit who can access production secrets.