Hướng dẫn can i use jwt with php? - tôi có thể sử dụng jwt với php không?
Bảo mật đã trở thành một khía cạnh cơ bản để xem xét trong khi phát triển một ứng dụng. Khi mọi người nhận thức rõ hơn và tin tặc khét tiếng hơn, bạn cần sử dụng các hệ thống tăng cường bảo mật dữ liệu của ứng dụng. Show
Trước đây, thông thường sử dụng lưu trữ phiên để bảo mật các ứng dụng. Trong thời gian gần đây, các phiên đã tỏ ra không hiệu quả, đã thúc đẩy di chuyển để xác thực với API. Mặc dù đây là một cách tuyệt vời và mạnh mẽ để bảo mật các ứng dụng web, nhưng nó đã trở nên lỗi thời khi các tin tặc cố gắng tìm ra cách bẻ khóa xác thực này. Khi web phát triển để chấp nhận ngày càng nhiều người dùng, nghiên cứu về các kỹ thuật xác thực an toàn tăng tốc. Năm 2010, thế giới đã được giới thiệu một tiêu chuẩn xác thực mới và an toàn - JWT. Hãy biết thêm về JWT. JWT là gì?JSON Web Token (JWT) là một cách an toàn để xác thực người dùng trên một ứng dụng web. Sử dụng JWT, bạn có thể chuyển một cách an toàn dữ liệu và thông tin được mã hóa giữa máy khách và máy chủ.
JWT cung cấp nhiều lợi ích. Dưới đây là một số trong số họ. Lợi ích của việc sử dụng JWT
Bây giờ bạn đã học được về những lợi thế, đã đến lúc đi sâu hơn vào JWT. Cấu trúc của JWT
Chuỗi trên là một ví dụ về chuỗi xác thực JWT. Thoạt nhìn, nó có vẻ là một chuỗi được sản xuất ngẫu nhiên. Nhưng đừng đánh giá thấp; Chuỗi này được tạo thành từ ba thành phần riêng biệt cần thiết trong JWT. Tiêu đề của JWT là phần ban đầu của chuỗi trước dấu chấm đầu tiên. Tiêu đề này được sản xuất bằng cách có được văn bản đơn giản và thực hiện các hoạt động mật mã trên đó. Hơn nữa, tiêu đề sử dụng quy trình mã hóa Base64 rất hiệu quả. Bạn có thể nhanh chóng có được các tiêu đề của JWT bằng các kỹ thuật mã hóa đối xứng hoặc không đối xứng. Tải trọng JWTThành phần trung tâm của chuỗi là phần tải trọng của JWT. Chuỗi này bao gồm tất cả các thông tin quan trọng về một yêu cầu nhận được và người dùng hoặc máy tính máy tính đã tạo yêu cầu. Có các trường cặp giá trị khóa được xác định trước trong tải trọng có thể được sử dụng để cung cấp thêm thông tin về yêu cầu nhận được. Dưới đây là một lời giải thích về các trường tải trọng chung.
Chữ ký JWTMột hoạt động mật mã được thực hiện trên dữ liệu JWT để có được chữ ký này. Nó mất vào tải trọng, khóa bí mật và giá trị tiêu đề của JWT. Chữ ký sau đó được tạo ra bằng cách áp dụng một hàm cho các giá trị thu được này. Máy chủ và người dùng có thể xác minh chữ ký này để biết về tính bảo mật và tính toàn vẹn của dữ liệu. Nếu chữ ký này khớp ở cả hai đầu, thì dữ liệu được coi là an toàn và tất cả các giao dịch khác có thể xảy ra. Sử dụng JWTS để bảo mật API PHPNhư bạn đã hiểu mọi thứ về JWT, hãy bảo mật API PHP của bạn bằng JWT. Thực hiện theo mã theo, và cuối cùng, bạn sẽ tạo API PHP chống giả mạo. Bài viết này tạo ra một trang đăng nhập đơn giản và xác thực nó bằng JWT. Điều này sẽ giúp bạn bắt đầu với JWT và PHP. Để theo dõi, bạn sẽ cần cài đặt PHP và nhà soạn nhạc trên máy tính của bạn. Nếu bạn chưa cài đặt trình soạn thảo trên máy tính, bạn có thể tìm hiểu cách cài đặt trình soạn thảo tại đây. Khi bạn đã cài đặt trình soạn thảo, hãy chạy công cụ từ thư mục dự án của bạn. Nhà soạn nhạc sẽ hỗ trợ bạn cài đặt Firebase PHP-JWT, thư viện của bên thứ ba để làm việc với JWTS và Apache. Sau khi thư viện được cài đặt, bạn sẽ cần thiết lập mã đăng nhập trong 1. Trong khi bạn làm điều này, hãy đặt một đoạn mã kiểm tra và nhận trình tải tự động từ công cụ nhà soạn nhạc. Mã dưới đây giúp bạn đạt được điều này.
Khi biểu mẫu được gửi, bạn cần kiểm tra dữ liệu đã nhập bằng nguồn dữ liệu hoặc cơ sở dữ liệu. Với mục đích của chúng tôi, chúng ta hãy tạo một biến 2 và đặt nó thành True. Đặt biến này thành True có nghĩa là dữ liệu được kiểm tra và hợp lệ.
Bất kỳ mã hóa nào nữa sẽ được bọc trong khối này. Giá trị của biến 2 chi phối tất cả các mã liên quan đến việc sản xuất và xác nhận JWT cần thiết. Nếu giá trị của nó là đúng, JWT sẽ được tạo ra; Nếu không, một lỗi sẽ được hiển thị.Tạo JWTHãy bắt đầu tạo JWT. Đầu tiên, bạn cần tạo thêm một số biến để hỗ trợ trong quá trình này. Như bạn đã thấy trong phần tải trọng, bạn phải tạo:
JWT có thể dễ dàng kiểm tra và kiểm tra tại các trình duyệt phía máy khách. Vì vậy, tốt hơn là ẩn khóa bí mật của bạn và các thông tin quan trọng khác trong một số tệp môi trường mà người dùng không thể truy cập thông qua các yêu cầu phía máy khách.
Bây giờ bạn có tất cả các dữ liệu cần thiết trong tay; Bạn có thể dễ dàng tạo một JWT. Tại đây, bạn sẽ sử dụng phương thức 4 của gói PHP-JWT. Phương pháp này giúp chuyển đổi mảng dữ liệu của bạn thành một đối tượng JSON.Sau khi chuyển đổi sang đối tượng JSON, chức năng mã hóa tạo ra các tiêu đề JWT và dấu hiệu tải trọng nhận được với sự kết hợp mật mã của tất cả các thông tin và khóa bí mật đã cho. Điều cần thiết là cung cấp ba đối số cho phương pháp 4 để sử dụng nó một cách chính xác. Đối số đầu tiên phải là thông tin tải trọng, đó là mảng dữ liệu trong trường hợp này. Thứ hai, bạn phải cung cấp khóa bí mật như một đối số; Và cuối cùng, bạn phải xác định kỹ thuật mật mã mà chức năng nên sử dụng để ký hợp đồng với JWT.Để có được và trả về JWT, bạn sẽ phải sử dụng phương thức Echo phía trên phương thức mã hóa, như được hiển thị bên dưới.
Bây giờ bạn đã nhận được mã thông báo JWT, bạn có thể chuyển nó sang phía máy khách và lưu nó bằng bất kỳ ngôn ngữ lập trình web nào bạn chọn. Hãy bắt đầu với một cuộc biểu tình ngắn của JS về tuyến đường phía trước. Đầu tiên, khi một bản gửi biểu mẫu thành công diễn ra, hãy lưu và nhận JWT đã tạo và nhận được trong bộ nhớ phía máy khách. Để hiển thị một số đầu ra về thành công của JWT, hãy xóa biểu mẫu đăng nhập và chỉ hiển thị một nút truy xuất và hiển thị dấu thời gian của JWT cho người dùng khi được nhấp. Dưới đây là một số mã mẫu cho quá trình được đề cập ở trên.
Bạn đã sản xuất và gửi JWT cho người dùng. Vì vậy, bây giờ đã đến lúc đưa JWT sử dụng ở phía người dùng. Sử dụng JWTNhư đã nêu trước đây, nếu việc gửi biểu mẫu thành công, bạn sẽ hiển thị một nút để có được dấu thời gian. Nút này sẽ gọi phương thức GET trên tập lệnh 6. Kịch bản 6 sau đó sẽ đặt JWT nhận được sau khi xác thực thành công trong tiêu đề xác thực.Mã sau đây sẽ giúp bạn đạt được kỳ tích này.
Khi bạn đã viết mã này, hãy chạy chương trình và nhập thông tin đăng nhập của bạn vào các trường biểu mẫu. Yêu cầu GET sẽ được gửi khi bạn nhấp vào nút Gửi. Dưới đây là một mẫu nhận yêu cầu để hỗ trợ bạn trong việc nhận dạng chính xác.
Xác thực JWTNếu bạn đã theo dõi cho đến đây, mọi thứ sẽ hoạt động tốt. Bây giờ, hãy bắt đầu với việc xác thực JWT. Để nhận trợ giúp với thao tác này, trước đây bạn đã thêm chức năng AutoLoader của nhà soạn nhạc. Bây giờ bạn sẽ sử dụng chức năng 8 để trích xuất mã thông báo từ tiêu đề của người mang. Để trích xuất này, bạn sẽ sử dụng chức năng 8 và cung cấp một biểu thức chính quy.
Mã trên cố gắng trích xuất mã thông báo từ tiêu đề của người mang. Trong trường hợp này, xử lý lỗi được sử dụng. Do đó, nếu không phát hiện ra mã thông báo, lỗi HTTP 404 được hiển thị cho người dùng. Để xác thực JWT, trước tiên bạn phải so sánh nó với JWT được tạo trước đó.
JWT được trích xuất được lưu tại chỉ số đầu tiên của mảng trận đấu. Nếu mảng phù hợp trống, điều đó có nghĩa là không có JWT nào được trích xuất. Nếu mã trước chạy thành công, nó ngụ ý rằng JWT đã được trích xuất và bây giờ bạn có thể tiến hành. Giải mã dữ liệu nhận được là bắt buộc để xác minh JWT. Chỉ khóa bí mật có thể được sử dụng để giải mã dữ liệu nhận được. Khi bạn đã có được khóa bí mật, bạn có thể sử dụng chức năng giải mã tĩnh của mô-đun PHP-JWT. Phương pháp giải mã yêu cầu ba đối số, như sau.
Nếu phương thức giải mã thành công, bạn có thể tiến hành xác thực JWT. Mã dưới đây sẽ hỗ trợ bạn giải mã và xác nhận JWT. 0Mã này sẽ cung cấp tất cả các tham số cần thiết cho hàm giải mã và lưu kết quả của phương thức. Sau đó, để ngăn chặn truy cập trái phép, việc xử lý lỗi được sử dụng. Nếu bất kỳ trường nào trong JWT không khả dụng, lỗi HTTP 401 cho biết truy cập trái phép sẽ được cấp cho người dùng. Xác thực đăng nhập cho các ứng dụng PHPThay vì sử dụng quy trình được thảo luận ở trên, bạn có thể sử dụng nền tảng nhận dạng LoginRadius để xác thực API PHP của mình một cách nhanh chóng. Bạn có thể bắt đầu bằng cách tham khảo tài liệu Php Loginradius. Ngoài ra, bạn có thể sử dụng SDK Php Loginradius để thêm đăng nhập đơn xã hội (SSO), từ đó, đơn giản hóa việc đăng ký và đăng nhập cho người dùng của bạn bằng cách loại bỏ nhu cầu ghi nhớ thêm một bộ thông tin đăng nhập cho ứng dụng của bạn. Sự kết luậnTrong hướng dẫn này, bạn đã tìm hiểu về JWT. Sau đó, tạo một ứng dụng web PHP và bảo mật nó với xác thực JWT. Bạn hiểu mức độ dễ dàng và quan trọng của một ứng dụng web. Bạn có thể tìm thấy mã hoàn chỉnh được sử dụng trong hướng dẫn này ở đây. Đừng quên thử điều này cho các dự án quan trọng hơn của bạn. Cuối cùng, nếu bạn phải đối mặt với bất kỳ vấn đề nào theo hướng dẫn này hoặc có câu hỏi, xin vui lòng bình luận bên dưới. Chúng tôi sẽ trả lời ngay khi có thể để làm rõ câu hỏi của bạn. Chúng ta có thể sử dụng JWT trong PHP không?Tại đây, bạn sẽ sử dụng phương thức mã hóa của gói PHP-JWT (). Phương pháp này giúp chuyển đổi mảng dữ liệu của bạn thành một đối tượng JSON. Sau khi chuyển đổi sang đối tượng JSON, chức năng mã hóa tạo ra các tiêu đề JWT và dấu hiệu tải trọng nhận được với sự kết hợp mật mã của tất cả các thông tin và khóa bí mật đã cho.use the PHP-JWT package's encode() method. This method helps transform your data array into a JSON object. Following the conversion to a JSON object, the encode function produces JWT headers and signs the received payload with a cryptographic combination of all the information and the given secret key.
Làm thế nào mã hóa JWT trong PHP?Cách xây dựng mã thông báo web JSON trong PHP.. Tạo tiêu đề và tải trọng.Để bắt đầu, chúng ta cần tạo các chuỗi JSON tiêu đề và tải trọng..... Tạo tiêu đề Base64URL và chuỗi tải trọng..... Tạo chữ ký..... Base64url mã hóa chữ ký..... Tạo mã thông báo web JSON .. Khi nào bạn không nên sử dụng JWT?Lý do để tránh JWT đi xuống một vài điểm khác nhau:.. Thông số kỹ thuật JWT chỉ được thiết kế đặc biệt cho các mã thông báo rất ngắn (~ 5 phút hoặc ít hơn)..... JWTS chỉ lưu trữ mã thông báo phiên đơn giản là không hiệu quả và kém linh hoạt hơn so với cookie phiên thông thường và không đạt được bất kỳ lợi thế nào .. Những nhược điểm của việc sử dụng JWT là gì?Một trong những nhược điểm chính của việc dựa vào mã thông báo là nó chỉ dựa vào một chìa khóa.Có, JWT chỉ sử dụng một khóa, nếu được xử lý kém bởi nhà phát triển/quản trị viên, sẽ dẫn đến những hậu quả nghiêm trọng có thể ảnh hưởng đến thông tin nhạy cảm.it relies on just one key. Yes, JWT uses only one key, which if handled poorly by a developer/administrator, would lead to severe consequences that can compromise sensitive information. |