Hi anh, anh có thể ra mắt series làm sao để có thể dựng một cấu trúc dự án (cách đặt files trong thư mục, cách config project, ...) có thể scale như big company được không vậy ạ. Em cảm ơn
Em có thắc mắc là refresh token và access token nên lưu vào đâu trên client. Rõ ràng phải lưu vào đâu đó mà JS có thể đọc được để còn set nó vào trường Authorization của request header. Nhưng nếu lưu vào localStorage hoặc cookies thì dễ bị lấy cắp bởi kĩ thuật XSS.
Hi anh. Nếu như trường hợp accessToken đó dùng đăng nhập cho web và cả mobile thì làm sao mình có thể nhân dạng được là accessToken đó có bị hack hay không? Ví dụ như trên web accessToken expired mình lưu accessToken vào database rồi cấp lại accessToken và refeshToken mới cho web. Thì khi vào bằng mobile thì accessToken của mobile cũng bị expired và cũng nằm trong database nhưng trường hợp này đâu phải bị hack.
Không cần lưu token trong db nhé bạn. Không ai lại lưu token trong db hoặc cache cả. Vì đó là quy tắc lquan tới security, và nó cũng làm phình db ra Solution là lưu token timestamp link tới user thôi nhé
Anh cho em hỏi chút chút là RefeshToken bản chất cũng tạo ra một token mới (Đây là hành động 1) , Mà hành động bên FE gọi đăng nhập lại lần nữa thì nó cũng sinh ra token mới (Nhưng thao tác này được chạy ngầm, người dùng vẫn không bị logout ra ). (Đây là hành động 2) Vậy sao không làm hành động 2 luôn đi mà lại phải sinh ra RefeshToken chi mệt vậy ???????
anh ơi. anh cho em hỏi sao em dùng $dateDiff trong mongosee thì n lại báo Invalid $project :: caused by :: Unknown expression $dateDiff vậy ạ. mongo e đang v5 ạ. Em cảm ơn anh nhiều
Hi anh. Em hiện tại đang dùng oath2 để kêt nối lấy với phần mềm khác. giờ em muốn auto tạo refresh token khi hêt hạn để đẩy lên header(authorization) để gọi api từ phần mềm đó. thì k bt nên dùng cách nào tốt nhất và nên lưu ở đâu ở dưới sserver ạ? em đang tính dùng axios interceptor mà k bt lưu token ở đâu và lấy ra ntn. mong anh tư vấn giúp. Em cảm ơn
Anh ơi cho em hỏi mình lưu token sau khi user đó đã đăng xuất hoặc bị thu hồi vào blacklisted làm gì vậy ạ?. Nếu lưu vào thì đó mục đích là gì khi em thấy những token này k còn tác dụng, nếu check token mình chỉ cẩn check ở whitelisted là được rồi em cảm ơn
Không bạn ơi, refresh token thường sẽ lưu trong database. Khi call api lấy access token sẽ kiểm tra RT còn hạn ko. Nếu còn thì cấp AT mới, ko còn thì phải login lại để lấy RT mới
@@huynhhoangthanh2726 bạn có thể cho mình hỏi chẳng hạn trong khoảng thời gian RT vẫn còn thời hạn mà RT bị đánh cắp thì bên đánh cắp được vẫn có thể thoải mái sử dụng RT để cấp AT mới liên tục đúng không bạn. Và nếu đúng thì có cách nào để ngăn chặn việc này không nhờ. Cảm ơn bạn
@@phamduong3540 như chủ clip đã nói refresh token được lưu ở db và có cơ chế thu hồi, nên dù có bị đánh cắp thì khi bị thu hồi thì hacker cũng không còn thời hạn truy cập. Hơn nữa khi lưu refresh token ở db thì sẽ được hash một chiều với secret key lưu ở phía server nên trường hợp lấy được refresh token rất khó xảy ra, t rừ khi hacker truy cập vào máy tính của user để lấy
Em chào anh Anh cho em hỏi là trong trường hợp mình lưu token ở cookie và user có xu hướng sử dụng các tool share cookie để sử dụng chung 1 tài khoản Mình sẽ có những phương pháp nào để ngăn chặn việc này ko ạ Và việc thống kê các phiên đăng nhập trên các thiết bị mình sẽ làm như nào ạ Em cảm ơn ạ Chúc anh nhiều sức khoẻ ❤
hay quá anh ạ , em sẽ giới thiệu nhiều cho bạn bè đồng nghiệp của em về các video của anh
Cảm ơn HUyến!
hay lắm ạ
xem video của anh thu được nhiều kiến thức bổ ích quá
Tks bro!
Đúng video em đang cần, cảm ơn anh
Rất dễ hiểu ạ. Em cảm ơn rất nhiều
Thanks anh, video bổ ích lắm ạ.
Anh ơi a làm thêm về Redis đi a. Rồi cassandra các thứ nữa a ơiii 😘
Hi anh, anh có thể ra mắt series làm sao để có thể dựng một cấu trúc dự án (cách đặt files trong thư mục, cách config project, ...) có thể scale như big company được không vậy ạ. Em cảm ơn
Like cho Chú
Cảm ơn bạn!
Trường hợp login ko cần pass mà thông qua google api thì sao anh. Em chỉ định nếu nhận được api hợp lệ từ google thì verified và cấp quyền
Em có thắc mắc là refresh token và access token nên lưu vào đâu trên client. Rõ ràng phải lưu vào đâu đó mà JS có thể đọc được để còn set nó vào trường Authorization của request header. Nhưng nếu lưu vào localStorage hoặc cookies thì dễ bị lấy cắp bởi kĩ thuật XSS.
Cookie em. Xem lại video cookie trước nha em
anh ơi làm sao để token mình sinh ra là duy nhất
Hi anh. Nếu như trường hợp accessToken đó dùng đăng nhập cho web và cả mobile thì làm sao mình có thể nhân dạng được là accessToken đó có bị hack hay không? Ví dụ như trên web accessToken expired mình lưu accessToken vào database rồi cấp lại accessToken và refeshToken mới cho web. Thì khi vào bằng mobile thì accessToken của mobile cũng bị expired và cũng nằm trong database nhưng trường hợp này đâu phải bị hack.
Không cần lưu token trong db nhé bạn. Không ai lại lưu token trong db hoặc cache cả. Vì đó là quy tắc lquan tới security, và nó cũng làm phình db ra
Solution là lưu token timestamp link tới user thôi nhé
chính xác lưu timestamp và xử lý timestap ở backend để hủy token, db lưu refesh token thì hợp lý hơn
Nhưng như vậy thì khi muốn huỷ bỏ 1 token còn hạn sử dụng thì làm thế nào vậy bạn? Mình thấy 2 phương pháp như trên video rất hợp lý
@@HaiNguyen-wh6gc phương pháp nào cũng dc cả, tùy theo yêu cầu của dự án thôi
lưu timestamp link tới user là sao bạn có thể giải thích cụ thể hơn ko?
Anh cho em hỏi chút chút là
RefeshToken bản chất cũng tạo ra một token mới (Đây là hành động 1) ,
Mà hành động bên FE gọi đăng nhập lại lần nữa thì nó cũng sinh ra token mới
(Nhưng thao tác này được chạy ngầm, người dùng vẫn không bị logout ra ). (Đây là hành động 2)
Vậy sao không làm hành động 2 luôn đi mà lại phải sinh ra RefeshToken chi mệt vậy ???????
Ồ, em không thể bắt user cứ một phải login lại một lần đúng không?
cho e hỏi a có khóa học hay series backend nodejs nào tính phí kh ạ
Video mới nhất có link á em
anh ơi. anh cho em hỏi sao em dùng $dateDiff trong mongosee thì n lại báo Invalid $project :: caused by :: Unknown expression $dateDiff vậy ạ. mongo e đang v5 ạ.
Em cảm ơn anh nhiều
Hi anh. Em hiện tại đang dùng oath2 để kêt nối lấy với phần mềm khác. giờ em muốn auto tạo refresh token khi hêt hạn để đẩy lên header(authorization) để gọi api từ phần mềm đó. thì k bt nên dùng cách nào tốt nhất và nên lưu ở đâu ở dưới sserver ạ? em đang tính dùng axios interceptor mà k bt lưu token ở đâu và lấy ra ntn. mong anh tư vấn giúp. Em cảm ơn
Có 2 video trình bày rồi đó em. Em vào kênh xem, dùng axios interceptor luôn đấy.
@@anonystick Dạ em có thấy, trong đó anh sử dụng jwt thì ko bt có dùng cách đó với oath đc k ạ?
Hi mọi ng , mình là newbie, mọi ng cho mình hỏi nên lưu acccess token ở đâu thì hợp lý ạ, cookie, session hay localStorage ạ
Mọi người đồng thanh trả lời là Cookie và một số options đi kèm ở video trước nữa.
Anh ơi cho em hỏi mình lưu token sau khi user đó đã đăng xuất hoặc bị thu hồi vào blacklisted làm gì vậy ạ?. Nếu lưu vào thì đó mục đích là gì khi em thấy những token này k còn tác dụng, nếu check token mình chỉ cẩn check ở whitelisted là được rồi em cảm ơn
Video sau sẽ rõ. Bật mí là đã đăng xuất rồi, mà còn có ai đó vẫn còn sử dụng thì đó là một sự kỳ lạ...
Hi anh, em nghe giọng anh cảm giác anh cũng làm hơn 10 năm trong nghề rồi, em tự hỏi 5 năm nữa Javascript còn được ưa chuộc không ạ
Quá ưa đi chứ. Em nghĩ xem react, vuejs, nestjs... Tương lai hết đó em
@@anonystick về front end thì quả là thế nhưng mà em theo hướng backend, em đang làm dự án ERP nên hỏi anh thếm nhưu thế
@@quanphamanh957 BE càng đúng hơn nữa. Server nodejs, db là mongodb... Giờ hướng về Js nhiều nha em...
Mà em chỉ cần nội lực giỏi là được. Có nội lực thì học 12 võ công các môn phái thì nhẹ nhàng. Nhân chứng sống đây kakak
@@anonystick hihi, em từ cơ khí sang tự học backend, may biết được kênh của anh chia sẻ nhìu bài toán thực tế em học thêm khá nhìu hướng giải quyết.
Khi refreshToken được gọi để tạo accessToken thì lúc đó phải tạo lại 1 refreshToken mới sao a?
Không bạn ơi, refresh token thường sẽ lưu trong database. Khi call api lấy access token sẽ kiểm tra RT còn hạn ko. Nếu còn thì cấp AT mới, ko còn thì phải login lại để lấy RT mới
@@huynhhoangthanh2726 bạn có thể cho mình hỏi chẳng hạn trong khoảng thời gian RT vẫn còn thời hạn mà RT bị đánh cắp thì bên đánh cắp được vẫn có thể thoải mái sử dụng RT để cấp AT mới liên tục đúng không bạn. Và nếu đúng thì có cách nào để ngăn chặn việc này không nhờ. Cảm ơn bạn
@@phamduong3540 như chủ clip đã nói refresh token được lưu ở db và có cơ chế thu hồi, nên dù có bị đánh cắp thì khi bị thu hồi thì hacker cũng không còn thời hạn truy cập. Hơn nữa khi lưu refresh token ở db thì sẽ được hash một chiều với secret key lưu ở phía server nên trường hợp lấy được refresh token rất khó xảy ra, t
rừ khi hacker truy cập vào máy tính của user để lấy
@@phamduong3540 thường Token bị đánh cấp do phía client á. Vì vậy nên tránh lưu AT RT trên local storage á.
Vì độ an toàn cho nên khi dùng RT lấy AT vì AT hết hạn thì return lại một cặp luôn. Ngoài trường hợp trên thì change pass, change email....
Em chào anh
Anh cho em hỏi là trong trường hợp mình lưu token ở cookie và user có xu hướng sử dụng các tool share cookie để sử dụng chung 1 tài khoản
Mình sẽ có những phương pháp nào để ngăn chặn việc này ko ạ
Và việc thống kê các phiên đăng nhập trên các thiết bị mình sẽ làm như nào ạ
Em cảm ơn ạ
Chúc anh nhiều sức khoẻ ❤
nhét thêm ip, agent của client vào jwt tới lúc verify jwt thì check lại 2 thằng này
@@trungtrung6286 IP của việt nam toàn IP động, nhét vào thế lúc ip nó thay đổi là login lại à