Hướng dẫn php artisan key:generate online - Phím nghệ nhân php: tạo trực tuyến
Một project Laravel khi mới được tạo luôn có 1 đoạn mã APP_KEY trong file Show 1. APP_KEY là gì?APP_KEY là một chuỗi 32 ký tự ngẫu nhiên được lưu trữ trong biến APP_KEY trong file Để tạo một khóa mới, bạn có thể chạy 2. Ý nghĩa của APP_KEYLaravel sử dụng APP_KEY được sử dụng để giữ cho cookie và dữ liệu được mã hóa khác an toàn , bao gồm session cookie, trước khi chuyển chúng cho trình duyệt của người dùng và sử dụng nó để giải mã cookie đọc từ trình duyệt. Điều này ngăn user thực hiện thay đổi đối với cookie và tự cấp quyền cho quản trị viên hoặc mạo danh người dùng khác trong ứng dụng của bạn. Cookie được mã hóa là một tính năng bảo mật quan trọng trong Laravel. Tất cả các mã hóa và giải mã này được xử lý trong Laravel bằng Encrypter sử dụng các công cụ bảo mật tích hợp của PHP, bao gồm OpenSSL. Mình sẽ không viết kỹ về cách mã hóa hoạt động ở đây, các bạn có thể tự đọc thêm về triển khai PHP của OpenSSL và chức năng openssl_encrypt. Hàm mã hóa trong file Encrypter.php:
Dùng cho session:
Dùng cho cookie:
3. Password và APP_KEYCó một số quan niệm sai lầm khi cho rằng APP_KEY liên quan đến mã hóa mật khẩu. Cần phân biệt rõ ở đây: mật khẩu của Laravel được băm bằng cách sử dụng 3.1. Mã hóaMã hóa là khi bạn có một dữ liệu và bạn muốn bảo vệ nó. Khi đó, bạn lấy dữ liệu gốc, mã hóa nó bằng 0 để nó biến thành chuỗi không có ý nghĩa. Chuỗi trực tiếp tạo ra dữ liệu gốc. Khi cần, bạn có thể dùng 1, giải mã giá trị được mã hóa này để truy xuất lại nó ở trạng thái ban đầu. Trong trường hợp này, key và ciphers rất quan trọng vì chúng được sử dụng trong giải mã. Và KHÔNG nên được giải thích.Laravel có 2 giúp chúng tôi thực hiện mã hóa và giải mã.Laravel sử dụng cùng một phương pháp này cho cookie, cả người gửi và người nhận, sử dụng APP_KEY làm khóa mã hóa. Cookie phản hồi được mã hóa, gửi cho người dùng, đọc lại trong một request trong tương lai và được giải mã, tất cả đều sử dụng cùng một khóa ứng dụng. 3.2. BămBăm đơn giản là mã hóa một chiều. Khi bạn dùng băm, bạn KHÔNG thể giải mã nó về trạng thái ban đầu. Bạn có thể kiểm tra xem hàm băm có khớp với giá trị đơn giản nào đó, để xác định giá trị ban đầu của nó. Đó là cách an toàn hơn với thông tin nhạy cảm như mật khẩu người dùng. Laravel có 3 giúp chúng ta thực hiện mã hóa băm một chiều.Tóm lại: APP_KEY KHÔNG sử dụng trong Băm và nó được sử dụng trong mã hóa. Vì vậy, bảo mật mật khẩu của bạn KHÔNG phụ thuộc vào APP_KEY. Trong khi đó, bất kỳ dữ liệu nào về ứng dụng của bạn mà đã được mã hóa thì sẽ phụ thuộc vào APP_KEY. 4. Thay đổi APP_KEY (Rotating the key)Bất khì chiến lược quản lý thông tin nào cũng nên được rotating: thay đổi khóa và mật khẩu một cách thường xuyên (VD: cứ sau 6 tháng) hoặc trong các tình huống cụ thể (VD: một nhân viên rời khỏi công ty).rotating: thay đổi khóa và mật khẩu một cách thường xuyên (VD: cứ sau 6 tháng) hoặc trong các tình huống cụ thể (VD: một nhân viên rời khỏi công ty). Tất nhiên, APP_KEY cũng cần phải được rotating. Trước khi đi sâu vào cách thay đổi APP_KEY, điều quan trọng là phải biết điều gì sẽ xảy ra nếu thay đổi nó. Khi APP_KEY được thay đổi trong một ứng dụng hiện có:
Như vậy, bạn có thể tưởng tượng điều đau đầu nhất khi thay đổi APP_KEY là xử lý dữ liệu được mã hóa bằng khóa ứng dụng cũ. Vì vậy, trước tiên bạn cần giải mã dữ liệu bằng APP_KEY cũ và sau đó mã hóa lại bằng APP_KEY mới. xử lý dữ liệu được mã hóa bằng khóa ứng dụng cũ. Vì vậy, trước tiên bạn cần giải mã dữ liệu bằng APP_KEY cũ và sau đó mã hóa lại bằng APP_KEY mới. Trong bài viết mình tham khảo có giới thiệu 1 package trợ giúp việc này, bạn tham khảo ở đây nhé. Sau đó thực hiện:package trợ giúp việc này, bạn tham khảo ở đây nhé. Sau đó thực hiện:
Như vậy là xong. Bạn nên cân nhắc về việc thay đổi key thường xuyên nhé. Tổng kếtTrong bài viết này, mình đã ghi rõ về định nghĩa, ý nghĩa của APP_KEY, phân biệt mã hóa và băm dữ liệu, cách để thay đổi APP_KEY. Cảm ơn bạn đã đọc và hy vọng bài viết này có thể giúp ích cho bạn trong quá trình làm ứng dụng với Laravel. )) ))Tài liệu tham khảohttps://techsemicolon.github.io/blog/2019/06/14/laravel-app-key-rotation-policy-for-security/ https://tighten.co/blog/app-key-and-you https://stackoverflow.com/questions/38980861/laravels-application-key-what-it-is-and-how-it-works |