Sử dụng mã thông báo không quốc tịch như JWT là an toàn miễn là bí mật bạn sử dụng để ký mã thông báo và cách bạn xác minh mã đó là an toàn. Nhưng có một số khía cạnh bổ sung mà bạn nên xem xét trước khi sử dụng JWTs làm mã xác thực trong URI đặt lại mật khẩu của bạn ...
Vì bạn không thể làm mất hiệu lực một JWT cụ thể (không giữ trạng thái lại) và hết hạn là không đủ (trong trường hợp cụ thể này), những gì bạn về cơ bản muốn có là JWT của bạn là những gì thường được biết một lần hoặc một lần sử dụng-Token. Lý do là bạn có thể không muốn một liên kết đặt lại mật khẩu duy nhất được sử dụng nhiều hơn một lần để đặt lại mật khẩu vì nó cho phép kẻ tấn công có thể khóa hoàn toàn người dùng (bằng cách thay đổi mật khẩu liên tục).
Tôi đã mô tả cách điều này có thể hoạt động tại đây: Single-Use Tokens w/ JWT - về cơ bản bạn sẽ cần phải chuyển một số trạng thái mà bạn có trên phía máy chủ của mình (trong trường hợp của bạn ví dụ: băm mật khẩu người dùng) thành khóa HMAC và sử dụng để ký mã thông báo dành riêng cho người dùng của bạn. Điều này sẽ dẫn đến việc xác minh mã thông báo không thành công sau khi mật khẩu được thay đổi ...
Mã thông báo này không an toàn, vì bí mật chữ ký của bạn rất dễ đoán. – Thilo
Ngoài ra, cũng không nên là địa chỉ email của một phần của JWT? Hoặc có một số định danh người dùng duy nhất khác không? Có phải là "công ty: Toptal"? – Thilo
ok đó chỉ là một ví dụ mà tôi thậm chí không biết dữ liệu được giải mã. Nếu bí mật chữ ký mạnh thì sao? jwt là một liên kết có an toàn không? Được đề cập ở đây https://github.com/dwyl/learn-json-web-tokens#q-if-i-put-the-jwt-in-the-url-or-header-is-it-secure thực sự đã cho tôi nhầm lẫn. – momokjaaaaa