Mã hóa thông tin cấu hình của ứng dụng Laravel

Laravel sử dụng cấu hình biến môi trường (environment variables) nhờ thư viện DotEnv, nó cực kỳ linh động và dễ sử dụng cho phép ta dễ dàng cấu hình và chuyển đổi giữa các môi trường … Nhưng liệu nó có an toàn? Các biến môi trường trong PHP hoàn toàn có thể lộ ra ngoài:

Hãy thử show phpinfo() trong ứng dụng Laravel của bạn, bạn có thể tìm thấy các thông tin cấu hình trên.

 

Cách mà tôi mã hóa thông tin cấu hình của ứng dụng Laravel bao gồm 2 việc:

  • Tạo một secret key và lưu nó vào ứng dụng
  • Lưu các cấu hình ứng dụng dưới dạng đã hóa dựa vào secret key ở trên

Note: Trong phần thực hiện có sử dụng một tính năng của Laravel là Tinker. Tinker là một tính năng ít được biết đến trong Laravel artisan giúp bạn nhanh chóng đọc dữ liệu ngay trong project của mình. Tinker cho phép chúng ta tương tác trực tiếp với ứng dụng của mình thông qua các lệnh như stop() hay dd() thậm chí là cả print_r() mà không cần thao tác qua các bước như tạo Routes, Model, Controller, …

Bước 1: Vào Tinker tạo một secret key và lưu vào ứng dụng

Lưu key vừa tạo ra vào config/env.php:

 

Bước 2: Tiếp tục sử dụng Tinker mã hóa tất cả các biến cấu hình mà bạn muốn. Ở ví dụ của tôi, tôi sẽ mã hóa 3 thông tin ứng dụng của tôi trên máy local bao gồm:

như sau:

Note: Nếu bạn gặp lỗi RuntimeException with message ‘The only supported ciphers are AES-128-CBC and AE
S-256-CBC with the correct key lengths.’ khi khởi tạo Encrypter hãy tạm thoát Tinker và xóa config cache rồi tiếp tục

 

Bước 3: Lưu các thông tin đã mã hóa lại file .env

 

Bước 4: Thêm vào đầu file bootstrap/app.php đoạn code sau để xử lý giải mã

 

Bước 5: Cuối cùng sử dụng secEnv(“ENV_NAME”, “fallback value”) ở bất kỳ đâu để truy cập biến môi trường đã mã hóa. Trong ví dụ đang xét là config/database.php

 

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *