Bảo vệ thông tin nhạy cảm trong dự án sử dụng .env

1018

Bài viết được sự cho phép của tác giả Nguyễn Thành Nam

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.

Bảo vệ thông tin nhạy cảm trong dự án sử dụng .env

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.

Các đặc điểm của file .env

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

Các đặc điểm của file .env

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.

Các đặc điểm của file .env

  Bàn về câu lệnh npm run build - tại sao cần phải build?

  6 câu lệnh NPM hữu ích – Web dev mà bỏ qua sẽ vô cùng tiếc

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.

Việc làm JavaScript Hồ Chí Minh dành cho bạn!

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).

Bảo vệ thông tin nhạy cảm trong dự án sử dụng .env

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.

Bài viết gốc được đăng tải tại blog.thanhnamnguyen.dev

Xem thêm:

Xem thêm Việc làm IT hấp dẫn tại TopDev