[Thảo luận] Cách lưu trữ xác thực của người dùng trên Client

Tháng trước có tranh cãi bung bét với một ông Techlead của một công ty của Singapore trong một buổi phỏng vấn của mình với công ty này.
 
Advertisement ADS

Q: Em lưu trữ token của người dùng trong dự án frontend như thế nào? có phương án bảo mật gì không?

A: Nếu lưu token của người dùng trên client thì tất cả mọi phương án đều không an toàn. cách làm của em chỉ là tìm cách giấu để người dùng khó có thể tìm ra và sử dụng tự do thôi. Đơn giản nhất là lưu vào localStorage, chịu khó hơn một chút thì lưu vào cookie, ngoài ra thì kết hợp một số ràng buộc khác như expiredTime ngắn kết hợp refresh token, client enscrypt/descrypt.

Q: Vậy vẫn có khả năng người dùng lấy được token phải không? lúc đó thì hệ thống có lỗ hổng rồi.

A: Như em nói lúc đầu, client rất khó để tin tưởng nên em nghĩ đó là những thứ tốt nhất em có thể làm với client rồi. Vậy anh em có cách nào tốt hơn có thể chia sẻ với em không?

Q: Anh lưu trữ token của người dùng trên server.

A: Ủa, anh...

Sau đó thì,.. không có sau đó nữa.

Advertisement ADS

Mình cũng không bài trừ cách làm stateful proxy để lưu trữ token của người dùng. nhưng có vẻ do không thích ông techlead này từ đầu nên cũng hơi gay gắt.

Update 1: cho các bạn hỏi cách lưu trên server trong câu trả lời của anh Techlead kia. điểm tiếp nhận request của client là một con proxy server, nó lưu session làm việc với browser và từ đó lấy ra token lưu trên con proxy đó inject vào request rồi redirect qua API gateway.

Anh em có cách bảo mật authorization người dùng nào hay không? cùng chia sẻ đi nào!

(Fb Lê Tuấn Mạnh)

Advertisement ADS