Dùng JWT cảm thấy k an toàn
Anh ơi, em dùng JWT nhưng cảm thấy k an toàn lắm, giả sử hacker chôm được token, dùng JWT thực hiện request chuyển tiền, đương nhiên JWT chưa hết expired time, liệu có cách nào bảo mật tốt hơn JWT người ta đang dùng k ạ
Remain: 5
2 Answers
tvd12
Professional
tvd12
Professional
Hiện tại thì anh đang dùng sha256 token, token này sẽ được lưu vào db, trong trường hợp user phát hiện ra mình bị hack có thể logout toàn bộ account, tương đương với việc xoá token khỏi cơ sở dữ liệu, điều này sẽ làm token bị vô hiệu hoá. Tuy nhiên cái giá phải trả là hiệu năng sẽ bị giảm vì mỗi lần request là 1 lần gọi vào db để lấy thông tin token.
-
2
Thành Lê Văn
Professional
Thành Lê Văn
Professional
Nếu nói đến bị hacker lấy được JWT rồi thì khó lắm. Vì nếu dùng JWT hoặc token thì hacker lấy được thì vẫn bị lỗi bảo mật thôi.
Về mặt an toàn thì người phân tích nghiệp vụ, dev.... phải luôn luôn nói với mình rằng dữ liệu lưu ở trên client không bao giờ là an toàn, nó hoàn toàn có thể bị ăn cắp bởi hacker.. (Đến dữ liệu lưu trên server nhiều khi còn bị lộ nữa cơ mà)
Còn cách thức phòng, giảm rủi do thì có nhiều cách.
- Xác định một JWT cho một IP, nếu JWT được sử dụng bởi 1 IP khác thì sẽ không được chấp nhận.
- Trên web thì đặt token lưu trữ ở cookies để tự động gửi lên bởi trình duyệt. Đặt cookie đó require https và sẽ nó là secure để không được đọc bởi js.
- Trên điện thoại thì chặn root hoặc tạo VM ảo, tự xây dựng ngôn ngữ. để lữu trữ, mã hóa token này.
- Tạo một token phụ mapping với JWT. Token phụ này lưu trữ trên server. Token này sẽ xác định vù JWT chưa hết hạn nhưng nó còn có thể được sử dụng hay không. Tùy logic sẽ kiểm tra thêm token phụ này nữa (Nên nhớ là tùy logic nghiệp vụ và độ bảo mật nhé, vì kiểm tra nhiều sẽ tốn tài nguyên call lên DB)
- Ví dụ với API đọc thì kiểm tra JWT thôi, nhưng nếu là API viết thì kiểm tra token mapping JWT để xem còn được sử dụng hay không.
Đây là 1 số cách xưa mình phát triển service authen mình đã triển khai.
-
0