Auth: 02 - So sánh giữa cookie vs token authentication 🎉

Поделиться
HTML-код
  • Опубликовано: 6 ноя 2024

Комментарии • 92

  • @EasyFrontend
    @EasyFrontend  4 года назад +9

    hihi video này hơi rối não 😅
    Có bạn nào xem xong rồi mà vẫn không hiểu gì hk?

    • @huubinhnguyen6240
      @huubinhnguyen6240 4 года назад

      cảm ơn anh :(( em đọc tài liệu nhiều lần rồi mà còn thiếu xót. xem video của anh lấp lại hết lỗ hổng

    • @EasyFrontend
      @EasyFrontend  4 года назад

      Yeah may quá, giúp bạn thông suốt được vấn đề là may mắn của mình òi. Ngon lành hehe 😍

  • @xuanthuc189
    @xuanthuc189 3 года назад

    Cố gắng mỗi video trọn vẹn 1 nội dung như video này thì rất hay. Một số video khác hay có câu cái này dài dòng để ở video khác...nghe câu này nó làm người học mông lung...

    • @EasyFrontend
      @EasyFrontend  3 года назад

      yeah cảm ơn bạn đã phản hồi nhé, mình sẽ lưu ý hơn nè hihi

  • @tuanvietnguyen734
    @tuanvietnguyen734 2 года назад

    Cảm ơn anh về bài giảng 😁 Nghe anh giảng vừa dễ hiểu vừa cuốn ý 😍😍

  • @nhattruong5855
    @nhattruong5855 2 года назад

    Rất hay rất dể hiểu. Thank bạn rất nhiêu!

    • @EasyFrontend
      @EasyFrontend  2 года назад

      cảm ơn bạn Trường nhiều nhé 😊

  • @quachaihiep8983
    @quachaihiep8983 4 года назад +1

    Bạn làm video rất hay, rất dễ hiểu. Cảm ơn bạn

    • @EasyFrontend
      @EasyFrontend  4 года назад

      Yeahhh cảm ơn bạn nhiều nhé 😍

  • @dungvu8790
    @dungvu8790 3 года назад +1

    Bài giảng hay quá , thanks you anh

    • @EasyFrontend
      @EasyFrontend  3 года назад

      hihi cảm ơn em nhiều nhé Dũng 😍

  • @thuanvo9283
    @thuanvo9283 3 года назад

    Lâu phải vào lại video bác hậu để ôn lại hihi

  • @shenkn2140
    @shenkn2140 4 года назад

    PHẢI NÓI LÀ TUYỆT VỜI.

    • @EasyFrontend
      @EasyFrontend  4 года назад

      wohooo cảm ơn em nhiều nhé Shen ơi 😉

  •  4 года назад

    Hóng anh là video thực hành cho auth

    • @EasyFrontend
      @EasyFrontend  4 года назад

      Yeah chỉ còn 1-2 videos nữa là tới rồi Min ơi, keep calm và đợi nhen hihi, tại anh dạo này sml quá, ko đi nhanh đc 😅

  • @quynhhuynh797
    @quynhhuynh797 4 года назад

    Quá hay a ơi. Cảm ơn anh

    • @EasyFrontend
      @EasyFrontend  4 года назад +1

      hihi cảm ơn em nhiều nhé Quỳnh ơi 😍

  • @vuhoang3783
    @vuhoang3783 4 года назад

    Hay quá anh ơi, em cảm ơn a nhiều!!!!!

    • @EasyFrontend
      @EasyFrontend  4 года назад

      Yeahhh cảm ơn em nhiều nhé Vũ ơiiiiii 😍

  • @campingstore123
    @campingstore123 2 года назад

    cảm ơn anh

  •  4 года назад

    ❤ cảm ơn anh

  • @tungnguyen3551
    @tungnguyen3551 4 года назад

    toẹt vời a Hậu ơi :D

    • @EasyFrontend
      @EasyFrontend  4 года назад +1

      hihi cảm ơn em nhiều nhé Tùng 😉

  • @nhatnamtran2973
    @nhatnamtran2973 4 года назад

    Anh hay làm backend ngôn ngữ nào thế, video sau có code mẫu hả anh

    • @EasyFrontend
      @EasyFrontend  4 года назад +1

      hi Nam, hiện thì anh hk có làm BE nha Nam 🙂Anh chỉ làm FE thôi nè hihi

  • @hieptm89
    @hieptm89 2 года назад

    Cho mình hỏi,
    Với JWT, làm thế nào để server biết Token phía Client gửi lên là Token chính xác, chưa có chỉnh sửa dưới client.
    Phía server không lưu, vậy phải có cơ chế ví dụ giải mã chuỗi Token gửi lên. Sau khi giải mã sẽ check những thông tin gì nhỉ ? Chắc chắn phải check secret key.
    Mong bạn giải thích giúp nha.

    • @EasyFrontend
      @EasyFrontend  2 года назад +1

      à em xem thêm cơ chế JWT em nhen, với secret key em có thể check đc là token đó có hợp lệ hay ko em nha, nếu nó bị chỉnh sửa thì em check valid nó sẽ trả về false á Hiệp hehe

    • @ChinhTrinhTDT
      @ChinhTrinhTDT Год назад

      Trong hệ thống sử dụng JWT (JSON Web Token), server có thể xác minh tính hợp lệ của token gửi từ phía client bằng cách thực hiện các bước sau:
      Giải mã JWT: Server sẽ sử dụng secret key (khóa bí mật) được chia sẻ trước đó với phía client để giải mã token. Bằng cách giải mã, server có thể trích xuất thông tin từ phần payload của token.
      Kiểm tra chữ ký (signature): Sau khi giải mã, server sẽ kiểm tra tính hợp lệ của chữ ký được tính toán từ phần header và payload của token. Để thực hiện việc này, server sử dụng secret key đã được chia sẻ để so sánh với chữ ký trong token. Nếu chữ ký không khớp hoặc token đã bị chỉnh sửa, server sẽ từ chối token đó.
      Kiểm tra thông tin trong payload: Server có thể kiểm tra các thông tin trong phần payload của token để xác minh tính hợp lệ của nó. Các thông tin này có thể bao gồm ID người dùng, quyền truy cập, thời gian hết hạn (expiry), và các thông tin tùy chọn khác. Server có thể kiểm tra xem token có đáng tin cậy và có quyền thực hiện yêu cầu từ phía client không.
      Xử lý logic ứng dụng: Sau khi xác minh tính hợp lệ của token, server có thể sử dụng các thông tin trong token để xác định quyền truy cập và thực hiện các logic ứng dụng phù hợp. Ví dụ: xác định người dùng, kiểm tra quyền truy cập, lấy thông tin từ cơ sở dữ liệu, và thực hiện các thao tác khác.
      Quan trọng nhất là secret key được sử dụng để ký và giải mã token. Vì vậy, đảm bảo rằng secret key được bảo mật tốt và chỉ chia sẻ giữa server và phía client tin cậy. Bằng cách giữ secret key bí mật, server có thể xác minh tính toàn vẹn và tính hợp lệ của token gửi từ phía client.

  • @KhanhPham-jq7cf
    @KhanhPham-jq7cf 4 года назад

    Thầy ơi, Nên học React Context hay Redux hả thầy? Thầy có thể làm video về vấn đề đấy không? E cảm ơn

    • @KhanhPham-jq7cf
      @KhanhPham-jq7cf 4 года назад

      Trong playlist của thầy có "Học redux cơ bản 2020" nhưng e đang băn khoăn có nên học redux không? Hay chỉ cần Context là được?

    • @bluetung2032
      @bluetung2032 4 года назад +1

      phải học cả bạn à

    • @bluetung2032
      @bluetung2032 4 года назад +1

      2 cái này học nhanh lắm nên bạn học cả nhé

    • @EasyFrontend
      @EasyFrontend  4 года назад +1

      Khanh Pham yeah như bạn Tùng nói, em nên học nhé Khánh, vì tuỳ project, tuỳ trường hợp mà mình có thể apply tương ứng. Tuy nhiên thực tế thì đa phần dùng redux nè 😉

    • @KhanhPham-jq7cf
      @KhanhPham-jq7cf 4 года назад

      Dạ e cảm ơn thầy và a Tùng nhé, e sẽ học cả 2 😁

  • @NguyenMinh-hy7lt
    @NguyenMinh-hy7lt 4 года назад

    Nhớ lại hồi trước mình cố gắng set cookie cho app ReactJS của mình set hoài không được rồi chuyển sang JWT xài mà không hiểu vì sao. Giờ mới biết cookie không cross domain được. Haha

    • @EasyFrontend
      @EasyFrontend  4 года назад +1

      haha ngon lành, cuối cùng cũng tìm ra được chân lý hehee 😍

  • @kienam5330
    @kienam5330 4 года назад

    anh Hậu ơi ra video nhanh lên !

    • @EasyFrontend
      @EasyFrontend  4 года назад

      hahaa max-speed rồi em ơi, hôm giờ sml quá 😅

  • @vinhang3882
    @vinhang3882 4 года назад

    có 1 thắc mắc là, token lưu ở browser thì bảo mật sẽ như thế nào. User vẫn mò mẫm F12 và lấy được token và call API.

    • @EasyFrontend
      @EasyFrontend  4 года назад

      hi Vinh, user bình thường ko ai biết cách làm vậy nha Vinh 😉
      Với lại đó là tài sản của user nè, nếu user lấy được token thì user cũng biết nó có tác dụng gì, nên nếu họ để lộ ra ngoài là lỗi của họ nhé Vinh 🙂

  • @tiendovan7496
    @tiendovan7496 4 года назад

    A hậu ơi! em đang gặp một vấn đề đó là khi em làm việc với Api và muốn thêm mới một user: thì em sẽ gọi thẳng đến Api createUser và await nó sau đó em gọi action để render lại toàn bộ data cho page đó. Vậy em muốn hỏi k bk vấn đề này của em có thể xử lí bằng cách khác tối ưu hơn được không ạ?? Mong a giải đáp thắc mắc ạ!

    • @EasyFrontend
      @EasyFrontend  4 года назад

      hi Tiến, việc em render lại cái list khi thêm user mới là đúng òi nè, không cần tối ưu gì thêm nha.
      Với em lưu ý khi em render cái list, nó có key cho mỗi item, chỉ có item mới nó mới được thêm vào thôi, còn item cũ nó ko có render lại nên em yên tâm nha. 😉

    • @tiendovan7496
      @tiendovan7496 4 года назад

      Easy Frontend vâng ạ.em cảm ơn a nhiều nha❤️

  • @LongLapTrinh29
    @LongLapTrinh29 3 года назад

    Bác xài máy nào để code vậy? Cho em xin thông tin với

    • @EasyFrontend
      @EasyFrontend  3 года назад +1

      hi bạn, thông tin máy tính của mình thế này nha:
      Macbook Pro 2019
      Screen 16 inches
      RAM 16GB
      SSD 512GB

  • @coderbanxe
    @coderbanxe 3 года назад

    Anh ơi cho em hỏi session lưu ở RAM trên server hay ở trong DB vậy a?

    • @EasyFrontend
      @EasyFrontend  3 года назад

      hi em, cái này tuỳ nhu cầu của em thôi nhen 😉
      Cơ bản là cần một nơi để lưu các session để validate các session của user, còn lưu ở đâu thì tuỳ nhu cầu của em nhé hehe

  • @haltruong6350
    @haltruong6350 4 года назад

    Hmmm v nếu làm app quản lý như cms thì nên jwt hay cookie anh. Vì xét bảo mật có vẻ cookie bảo mật hơn và nó chặn việc crossdomain nữa hmmmmmmm

    • @EasyFrontend
      @EasyFrontend  4 года назад +1

      hi Hào, cái này thì mình cũng hk có nhiều kinh nghiệm lắm để đánh giá việc này, còn hiện tại theo những gì mình làm thì jwt là đủ òi nè.
      Giới hạn token chỉ có hiệu lực 2 tiếng, rồi làm cơ chế refresh token.
      Làm việc này thì có thể phát triển cả web, cả app, cả hệ thống khác, còn cookie thì apply được cho web thôi nè.
      Đó là theo mình biết thôi hen, còn tuỳ dự án, tuỳ team có thể trao đổi với nhau để chọn một phương pháp phù hợp hen. 😉

    • @haltruong6350
      @haltruong6350 4 года назад

      Dạ cảm ơn câu trả lời của anh. Tại em cũng muốn làm một project nhỏ cho bản thân mà đang phân vân cơ chế login hihi. Video anh hay lắm. Sau này rảnh anh làm các tut video theo quy trình anh làm việc ở công ty để em tham khảo với :v em vẫn chưa biết quy trình làm một sản phẩm ở một công ty chuyên nghiệp như thế nào hihi

  • @aicotanchinhhang1268
    @aicotanchinhhang1268 4 года назад

    a ơi, v khi làm prj với firebase, lúc login băng email pass, thì firebase nó cũng save token lên localstrorage đúng k a

    • @EasyFrontend
      @EasyFrontend  4 года назад

      hi Trí, mình chưa thử với Firebase nên không rõ, nhưng chắc là vậy đó Trí ơi.
      Trí mở localStorage lên check thử xem sao nhé 😉

  • @buukhanhong40
    @buukhanhong40 4 года назад

    Anh ơi cho em hỏi, mình nên tập trung vào 1 FW để làm frontend, hay là nên học hết cả 3: angular, vue, react luôn ạ? E đang là sv cntt năm 3 ạ

    • @EasyFrontend
      @EasyFrontend  4 года назад +1

      hi Khánh, theo anh thì em chỉ nên tập trung 1 fw để học thôi nhé, a nghĩ em nên xuất phát từ reactjs đi nha Khánh 😉

  • @songminguo234
    @songminguo234 2 года назад

    Nếu dùng token authentication bên server thì sau khi logout, điều gì sẽ xảy ra nếu client gửi request lên và vẫn dùng token còn lưu bên phía client ạ?

    • @EasyFrontend
      @EasyFrontend  2 года назад

      à lúc đó em sẽ bị trả về lỗi 401 em nha 😉

  • @_PhanSiHoang
    @_PhanSiHoang 4 года назад

    Anh ơi em có thắc mắc mình lưu token như v lỡ như bị hacker chôm thì sao anh, có cách nào bảo vệ ko ạ.

    • @EasyFrontend
      @EasyFrontend  4 года назад +1

      hi em ơi, cái này thì mình chỉ có cách hạn chế chứ hk có cách nào chặn hoàn toàn nè.
      Cái token em nên để thời gian hiệu lực khoảng 2 giờ thôi nè, để lỡ khi có mất thì nó cũng hk còn hiệu lực bao lâu để sử dụng, hoặc nhiều khi nó đã expired mất tiu rồi hehee Còn em mà dùng token ko bao giờ expired thì hơi nguy hiểm. Còn việc chặn hacker thì chắc ko đc đâu em, nếu được thì mấy hệ thống lớn, bự nó ko bị tấn công đâu nè 😉

    • @_PhanSiHoang
      @_PhanSiHoang 4 года назад

      @@EasyFrontend Vâng em cám ơn

  • @loongphuong
    @loongphuong 4 года назад

    Em đang thắc mắc một số chỗ a gt giúp em với ạ
    1. Theo e được biết thì Cookie được tạo bởi web server và quản lí bởi trình duyệt. Nhưng em thấy a lại ghi là quản lí bởi server.
    2. Client side validatation có thay thế hoàn toàn được server side validation không ạ.
    Em cảm ơn a

    • @EasyFrontend
      @EasyFrontend  4 года назад +1

      hi Long,
      1. Ý anh để controlled by là được xử lý bởi server á Long, như ý em nói là đúng òi á.
      2. Client side ko thay thế cho server side nha Long. Vì client thì có rất nhiều loại nè, có thể gọi từ web, mobile, terminal, bot, .... nên mình phải check trên server nha Long. Không bao giờ tin tưởng client nào hết nha. 😉

    • @loongphuong
      @loongphuong 4 года назад

      @@EasyFrontend kiến thức bổ ích quá. em cảm ơn anh ạ

  • @HieuTran-kd5kx
    @HieuTran-kd5kx 4 года назад

    A hậu làm demo login auth đi anh

    • @EasyFrontend
      @EasyFrontend  4 года назад +1

      Yeah chuẩn bị làm rồi nha Hiếu ơi, giải thích một vài khái niệm trước, xong anh mới code nhen hehe

    • @HieuTran-kd5kx
      @HieuTran-kd5kx 4 года назад

      Easy Frontend hóng lắm video của anh

  • @thanggthem7578
    @thanggthem7578 3 года назад

    Cho em hỏi nếu lưu token ở local storage thì có ảnh hưởng gì tới security không ạ ? Nếu bị lấy token và bị CSRF thì sao ạ ?

    • @EasyFrontend
      @EasyFrontend  3 года назад +6

      hi Thắng, em lưu ở local storage thì dĩ nhiên có risk nè, nếu bị attack trên domain của em thì chắc chắn lấy đc token.
      Một số cân nhắc cho em:
      - Mức độ security của dự án có cao hk? (thường liên quan tới tài chính thì ko nên lưu ở local storage, còn những web app đơn giản thì okie em nha)
      - Giảm thời gian hiệu lực của token để khi bị mất cũng ko thiệt hại nhiều.
      - Có cơ chế refresh token và block account khi cần thiết cho trường hợp có nghi vấn.
      - Kẹp thêm các điều kiện để phát hiện truy cập lạ, ví dụ token này đi với trình duyệt này, nhưng lại đăng nhập ở nơi khác thì phải xác nhận thêm gì đó, ...
      - ...
      Em có thể trao đổi thêm với backend để tìm ra solution tương ứng em nha 😉

    • @thanggthem7578
      @thanggthem7578 3 года назад

      @@EasyFrontend Em cảm ơn anh ạ.

  • @namanh3119
    @namanh3119 4 года назад

    bạn cho mình hỏi hiện tại cookie dùng cho những ứng dụng gì thế ?

    • @EasyFrontend
      @EasyFrontend  4 года назад +1

      hi Nam ơi, theo mình thấy thì mấy ứng dụng mới sau này thì hầu như ko có xài tới cookie-based auth nữa nè, may be là còn ở hệ thống cũ hoặc mấy cái CMS này nọ hoặc có những cái khác mà mình hk biết hihi

    • @namanh3119
      @namanh3119 4 года назад

      @@EasyFrontend thank bạn.

  • @danielhat4440
    @danielhat4440 2 года назад

    Anh ơi, trong dự án sử dụng Angular + Nodejs, thì em thấy cả 2 thằng này đều tạo cookie được. Vậy tạo cookie bên client thì khác gì bên server ạ?

    • @EasyFrontend
      @EasyFrontend  2 года назад

      à phía server em có thể set cookies với HTTP_ONLY, như vậy sẽ ko truy cập bằng javascript được.
      Còn phía client thì khi tạo cookies thì nó sẽ ko set http-only đc em nhen 😉

  • @manhaosy8644
    @manhaosy8644 4 года назад

    cho em hỏi vài câu
    1. sessionId thường lưu vào database hay là ở ram ạ
    2. token lưu ở cookie hay localStorage theo em tham khảo qua gg thì có vẻ lưu ở cookie bảo mật hơn vì httpOnly ko đc đc bằng js trên trình duyệt
    anonystick.com/blog-developer/json-web-token-bao-mat-restful-api-voi-jwt-va-cookie-httponly-secure-201906223285306.jsx

    • @vuminhtien5841
      @vuminhtien5841 4 года назад

      . hóng :v

    • @EasyFrontend
      @EasyFrontend  4 года назад +1

      hi Mạnh, với 2 câu hỏi trên thì em có thể search google thêm nhen, có nhiều ý kiến lắm nè 😉
      Còn theo anh thì:
      1. SessionId thường sẽ được lưu vào db luôn nè, để trường hợp em có nhiều frontend khác nhau thì nó còn xử lý được, chứ trên RAM là chịu thua luôn, với nếu nhiều session thì e xử lý trên RAM hơi căng. Có thể e dùng thêm redis cache để xử lý vấn đề này cũng đc :)
      2. Token thì mình nên lưu ở localstorage em nha, về bảo mật thì hầu hết các tình huống đều okie nè. Em lưu trong cookie thì nó lại quay về bài toán cookie ko cross domain đc, ko tương thích trên web với native app. Bản chất thì em muốn lưu đâu cũng đc, nhưng recommend vẫn là local storage nhé! 🙂

    • @manhaosy8644
      @manhaosy8644 4 года назад

      Easy Frontend em cảm ơn ạ

    • @phongs2nhu
      @phongs2nhu 4 года назад +1

      #1. Theo mình nó còn tùy vào nhu cầu app của bạn:
      - 1.1 Có cần scale hay ko: nên lưu ở Redis or DB để những nơi khác có thể achieve đc.
      - 1.2 Khi app bị shutdown thì chuyện ji xảy ra: User có còn đc duy trì đăng nhập khi app đc start -> Lại qua về 1.1
      - 1.3 Thật ra không xài token-based auth mà dùng cookie thì vẫn có hướng đi đó là "FormsAuthentication": Lúc này cookie token gửi cho client là encoded string (machineKey, validation type (SHA1) và decryption (AES) nằm ở web config).
      #2. Như anh Hậu chia sẻ thì rõ ràng dù là cookie hay token lưu ở bất kì đâu, việc bảo quản nó là việc nên làm của user. Bên .net web app có khái niệm gọi là "@Html.AntiForgeryToken()" để tránh tình trạng Cross-site request forgery (CSRF).
      ~ Phong Nguyễn ~

  • @lina-qt8tj
    @lina-qt8tj 3 года назад

    Trong project thực tế khi anh đi làm thì a thường lưu token ở đâu ạ? =))

    • @EasyFrontend
      @EasyFrontend  3 года назад +1

      hi Lim ơi, mấy project ko strictly về tài chính, bảo mật thì lưu ở local storage là okie òi em ơi.
      Còn mấy project liên quan tới tài chính thì xử lý ở cookies em nha 😉

    • @lina-qt8tj
      @lina-qt8tj 3 года назад

      @@EasyFrontend vâng ạ, thank you anh

    • @phamhoangdu7736
      @phamhoangdu7736 3 года назад

      @@EasyFrontend Dạ còn sessionStorage thì sử dụng cho project nào vậy ạ

  • @freesoftware2529
    @freesoftware2529 4 года назад

    tạo ra token ở backend thì nó đc lưu ở đâu vậy a?

    • @EasyFrontend
      @EasyFrontend  4 года назад

      FREE SOFTWARE hi em, token tạo ra rồi trả về bên client nhé em, server ko cần lưu nè, khi nào client gửi token đó lên thì server sẽ validate cái token xem hợp kệ hay ko thôi nhen 😉

    • @gauphepha493
      @gauphepha493 3 года назад

      @@EasyFrontend Ad có thể nói rõ việc server validate token đó lại không ạ. Nếu client edit token thì server sao biết dc nhỉ trong trường hợp nó ko lưu lại

    • @hoangucollection6181
      @hoangucollection6181 2 года назад

      @@gauphepha493 server sẽ có secrect key kết hợp (lúc tạo ra) token và dùng để compare khi client gửi lên nhe

  • @tiendang5149
    @tiendang5149 Год назад

    Bài này ông dạy sai r, 2p30s đầu tiên chưa thấy đúng chỗ nào luôn

    • @EasyFrontend
      @EasyFrontend  Год назад

      hi Tiến, video này mình làm 2 năm trc òi, hk biết mình sai chỗ nào, nhờ bạn nói rõ thêm để mình học hỏi nhé 🙏

  • @MinhLe-tw7tv
    @MinhLe-tw7tv 4 года назад

    chấm mút, watch later :v

  • @toano2913
    @toano2913 Год назад

    Trình bày ko dễ hiểu. Nói toàn từ chuyên môn ko dành cho ng mới tiếp cận