Trong quá trình phát triển phần mềm và quản lý dự án, việc bảo vệ thông tin bí mật như API key, mật khẩu, và các thông tin quan trọng khác là rất quan trọng. Một cách phổ biến để giải quyết vấn đề này là sử dụng file
.env
, một cách quản lý biến môi trường được nhiều lập trình viên sử dụng.
I. File .env là gì
Tệp .env
là một tệp cấu hình chứa các biến môi trường cho một ứng dụng hoặc dự án phần mềm. Trong ngữ cảnh này, biến môi trường là các giá trị mà ứng dụng sử dụng để cấu hình chạy, chẳng hạn như API key, mật khẩu cơ sở dữ liệu, và các thông số cấu hình khác...
Tên .env
là viết tắt của từ environment (môi trường), và tệp này thường được sử dụng để giữ các thông tin nhạy cảm mà bạn không muốn lưu trữ trực tiếp trong mã nguồn của bạn, đặc biệt là khi chia sẻ mã nguồn trên các hệ thống quản lý phiên bản như Git.
Mỗi dòng trong tệp .env
thường chứa một biến môi trường và giá trị của nó, được đặt tên theo định dạng TEN_BIEN=GIATRI
.
DATABASE_URL=mysql://user:password@localhost:3306/database
API_KEY=your_api_key_here
DEBUG=true
Các giá trị này sau đó có thể được đọc và sử dụng trong mã nguồn ứng dụng để cấu hình và thực hiện các tác vụ cụ thể. Thông thường, một thư viện như dotenv được sử dụng để tải các biến môi trường từ tệp .env
vào quá trình chạy của ứng dụng.
II. Các đặc điểm của file .env
1. Quản lý biến môi trường một cách đơn giản
Một trong những ưu điểm lớn nhất của .env
là khả năng đơn giản hóa quản lý biến môi trường. Thay vì trực tiếp nhúng thông tin bí mật vào mã nguồn, chúng ta có thể lưu trữ chúng trong tệp .env
và gọi chúng trong mã nguồn khi cần thiết. Điều này giúp lập trình viên dễ dàng thay đổi cấu hình mà không cần sửa đổi mã nguồn.
2. Thông tin bí mật được an toàn
Thông tin bí mật như API key, mật khẩu và các thông tin nhạy cảm khác thường xuyên cần được bảo vệ khỏi sự truy cập trái phép. .env
giúp ngăn chặn việc lộ thông tin này bằng cách giữ chúng trong một tệp không nằm trong lịch sử kiểm soát phiên bản (Git). Điều này đảm bảo rằng những thay đổi thông tin bí mật không được lưu trữ trong các commit của mã nguồn.
3. Quản lý phạm vi dự án hiệu quả
Mỗi dự án có thể có nhiều cấp độ biến môi trường tùy thuộc vào hệ điều hành, người dùng hay phiên làm việc. .env
giúp quản lý phạm vi dự án một cách hiệu quả bằng cách giữ thông tin trong phạm vi chỉ của ứng dụng, tránh xung đột với các biến môi trường khác trên hệ thống.
4. Khả năng di chuyển và linh hoạt
Tệp .env
có khả năng di chuyển, cho phép bạn đặt nó ở bất kỳ thư mục nào trong dự án. Điều này tăng cường an ninh bằng cách tránh hiển thị thông tin quan trọng khi có sự cố cấu hình máy chủ hoặc mã nguồn. Giống như việc lưu trữ SSH key tại một vị trí ổn định như ~/.ssh
5. Tích hợp dễ dàng trong quy trình phát triển
Sử dụng .env
không chỉ giúp bảo vệ thông tin bí mật mà còn tạo ra một quy trình phát triển mạnh mẽ. Bạn có thể tích hợp .env
vào công cụ CI/CD của mình để tự động hóa việc cung cấp các thông tin bí mật phù hợp với môi trường triển khai, tạo ra một quy trình triển khai an toàn và linh hoạt.
6. Tệp bị bỏ qua
Tệp .env
có thể được bỏ qua khỏi hệ thống kiểm soát phiên bản, ngăn chặn thông tin bí mật bị commit vào lịch sử của mã nguồn (sử dụng git ignore
). Bạn cũng có thể tạo một tệp .sample.env
để hướng dẫn người sử dụng về cách thiết lập các biến môi trường mà không cần chia sẻ thông tin bí mật.
III. Hướng dẫn sử dụng .env
1. Trong node.js
Để minh họa cách sử dụng .env
, hãy xem một ví dụ đơn giản với Node.js.
Trong thư mục chính của bạn, chạy cậu lệnh npm init
và sau đó npm install dotenv
để cài đặt thư viện dotenv.
Tạo một tệp .env
chứa các biến môi trường với định dạng TEN_BIEN=GIATRI
.
Ở index.js
, thêm đoạn mã sau:
require('dotenv').config();
console.log(process.env.TEN_BIEN);
Chạy ứng dụng và giá trị của biến sẽ được xuất ra terminal.
2. Trong các dự án sử dụng framework như ReactJS, NextJS, VueJS...
Tiến hành cài đặt như trên, nhớ git ignore
file .env
trước khi push code, sau đó cấu hình .env
ở các hosting hoặc thông qua CI/CD.
Ví dụ: khi bạn làm dự án ở dưới local bạn khai báo các thông tin tại .env
GRAPHCMS_TOKEN=sdadasjdas...
NEXT_PUBLIC_GRAPHCMS_ENDPOINT=dsaddasdasd...
Sau khi toàn tất, bạn kiểm tra trong file .gitignore
đã có .env
hay chưa. Cuối cùng, khi push code hoàn tất, bạn có thể thêm các biến trong .env
lên (ví dụ mình sử dụng Vercel như hình bên dưới).
IV. Kết luận
Sử dụng tệp .env
không chỉ giúp bảo vệ thông tin bí mật của ứng dụng mà còn tăng cường tính di động và linh hoạt của mã nguồn. Điều này làm cho .env
trở thành một công cụ quan trọng trong quá trình phát triển và bảo trì dự án. Hãy tích hợp .env
vào quy trình phát triển của bạn để đảm bảo an toàn thông tin và sự thuận tiện trong quản lý biến môi trường.