Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
BEST
Programming

/

Back-end

Cuộc chinh phục hoàn toàn bảo mật mùa xuân [Phiên bản sửa đổi 6.x]

Đây là bài giảng sửa đổi được biên soạn bằng phiên bản mới nhất của Spring Security 6. Bạn sẽ học các kỹ năng chính liên quan đến và công nhận.

(4.9) 70 đánh giá

2,103 học viên

  • leaven
백엔드개발자
스프링시큐리티
개정판
업데이트
Spring
Spring Boot
Spring Security
security
web-security

Đánh giá từ những học viên đầu tiên

Dịch cái này sang tiếng Việt

  • Chinh phục hoàn toàn API cơ bản của Spring Security và các bộ lọc liên quan

  • Hiểu kiến ​​trúc bên trong của Spring Security cũng như các vai trò và luồng mối quan hệ giữa các đối tượng

  • Tìm hiểu nguyên tắc xác thực và hoạt động nội bộ của Spring Security

  • Tìm hiểu nguyên tắc ủy quyền và hoạt động nội bộ của Spring Security

  • Hiểu cách kết nối Spring Security và Spring MVC

  • Tìm hiểu cách xây dựng hệ thống bảo mật ở cấp độ thực tế bằng Spring Security

Phiên bản mới nhất của Spring Security 6.x đã được sửa đổi hoàn toàn!!

Spring Security 6.x cung cấp những thay đổi và cải tiến đáng kể so với các phiên bản trước và hướng dẫn này tập trung vào những thay đổi và tính năng mới đó .

Theo đó, nhiều nội dung chương trình giảng dạy đã được thay đổi hoặc bổ sung mới so với khóa học Spring Security hiện tại. Đặc biệt , khu vực phân quyền của Spring Security đã có những thay đổi đáng kể so với phiên bản trước, đến mức toàn bộ khung chương trình đã được viết lại .
Do đó, khóa học Spring Security Complete Mastery này sẽ phân tích và đào sâu vào những thay đổi chính và các tính năng mới của phiên bản Spring Security 6.x một cách chi tiết. Việc học viên nắm vững từng chức năng và API thông qua lý thuyết và thực hành của khóa học này sẽ rất hữu ích cho những người đã có kinh nghiệm phát triển ở các phiên bản trước, cũng như những người mới làm quen với Spring Security trong việc phát triển ứng dụng sử dụng Spring Security trong môi trường thực tế.


Các khóa học dành cho người mới bắt đầu, trung cấp và nâng cao

Khóa học này được thiết kế dành cho người mới bắt đầu làm quen với Spring Security cũng như người dùng trung cấp và nâng cao có kiến thức hoặc kinh nghiệm cơ bản nhưng muốn có thêm kiến thức chuyên sâu hơn và hiểu sâu sắc các nguyên tắc cốt lõi, cấu trúc bên trong và phương pháp vận hành của Spring Security và áp dụng chúng.

Nội dung học tập chính 💡

Khóa học này tập trung vào các chủ đề cốt lõi của Spring Security, tập trung vào năm trục chính: xác thực, ủy quyền, bảo vệ khai thác, tích hợp và các dự án thực tế .

1. Xác thực

Spring Security 6.x cung cấp nhiều phương thức xác thực người dùng, bao gồm xác thực dựa trên biểu mẫu, xác thực cơ bản và xác thực ghi nhớ. Các phương thức xác thực này cung cấp một phương tiện hiệu quả để người dùng chứng minh danh tính của họ với hệ thống. Quá trình xác thực xác minh danh tính của người dùng bằng cách kiểm tra thông tin đăng nhập do người dùng cung cấp và quá trình này tập trung vào AuthenticationManager . Sau khi xác thực thành công, thông tin xác thực của người dùng được lưu trữ trong SecurityContext bên trong SecurityContextHolder , được sử dụng để tham chiếu trạng thái xác thực của người dùng trong toàn bộ ứng dụng. Spring Security cũng quản lý thông tin phiên của người dùng thông qua quản lý phiên, cung cấp các tính năng như kiểm soát phiên đồng thời, cấu hình chính sách phiên, hết hạn phiên và bảo vệ cố định phiên để bảo mật các phiên của người dùng. Nó cũng được thiết kế để xử lý các ngoại lệ khác nhau có thể xảy ra trong quá trình xác thực một cách phù hợp.


2. Ủy quyền

Quy trình ủy quyền của Spring Security xác định liệu người dùng có được phép truy cập một tài nguyên cụ thể sau khi xác thực hay không. Spring Security 6.x cho phép bạn cấu hình ủy quyền dựa trên URL hoặc dựa trên phương thức bằng HttpSecurity , và kiến trúc ủy quyền mới, bao gồm AuthorizationManager , cho phép bạn triển khai các chính sách ủy quyền chi tiết và linh hoạt hơn. Điều này cho phép các nhà phát triển xác định các chính sách kiểm soát truy cập phù hợp với yêu cầu bảo mật của ứng dụng và đánh giá quyền của người dùng trong việc cấp hoặc từ chối quyền truy cập vào tài nguyên. Ủy quyền đóng vai trò quan trọng trong việc tăng cường bảo mật ứng dụng và rất quan trọng để bảo vệ thông tin và tài nguyên nhạy cảm.

3. Bảo vệ chống lại các cuộc tấn công

Spring Security 6.x cung cấp các tính năng như bảo vệ CORS, CSRF và cài đặt cookie SameSite để bảo vệ ứng dụng khỏi nhiều mối đe dọa bảo mật khác nhau. Các tính năng bảo mật này bảo vệ ứng dụng khỏi các cuộc tấn công cross-site scripting và cross-site request forgery, đồng thời giữ an toàn cho dữ liệu và phiên làm việc của người dùng. Cài đặt CORS cho phép nhà phát triển truy cập tài nguyên từ các miền khác một cách an toàn, trong khi bảo vệ CSRF ngăn chặn các trang web độc hại thực hiện yêu cầu thay mặt người dùng. Việc thiết lập thuộc tính cookie SameSite cung cấp một lớp bảo mật bổ sung bằng cách kiểm soát cách trình duyệt truyền cookie.

4. Tích hợp

Spring Security 6.x cung cấp khả năng tích hợp chặt chẽ với môi trường Servlet, Spring MVC và xử lý bất đồng bộ Spring MVC. Sự tích hợp này cho phép các nhà phát triển dễ dàng thêm và cấu hình các tính năng bảo mật cho các ứng dụng dựa trên Spring. Tích hợp Servlet cho phép Spring Security quản lý việc xử lý bảo mật của các yêu cầu và phản hồi HTTP, trong khi tích hợp Spring MVC cho phép các chính sách bảo mật chi tiết ở các lớp điều khiển và dịch vụ. Tích hợp với xử lý bất đồng bộ đáp ứng nhu cầu bảo mật của các mô hình lập trình phản ứng sử dụng Spring WebFlux, cho phép các nhà phát triển quản lý bảo mật hiệu quả khi xây dựng các ứng dụng bất đồng bộ và dựa trên luồng. Sự tích hợp này cho phép Spring Security tích hợp liền mạch với nhiều kiến trúc ứng dụng Spring khác nhau và giảm độ phức tạp của việc triển khai bảo mật.

5. Dự án thực tế

Spring Security 6.x đóng vai trò quan trọng trong việc triển khai hệ thống xác thực thành viên và quản lý thành viên trong các dự án thực tế. Điều này cho phép các nhà phát triển triển khai hiệu quả các chức năng như xác thực người dùng, quản lý ủy quyền và kiểm soát truy cập tài nguyên. Hệ thống xác thực thành viên cung cấp nền tảng để tăng cường bảo mật ứng dụng, trong khi hệ thống quản lý thành viên quản lý việc lưu trữ, truy xuất, sửa đổi và xóa thông tin người dùng một cách an toàn. Quản lý ủy quyền gán các quyền truy cập khác nhau cho mỗi người dùng, trong khi quản lý tài nguyên kiểm soát quyền truy cập vào thông tin và chức năng nhạy cảm trong ứng dụng. Hơn nữa, Spring Security hỗ trợ cấu hình ủy quyền động bằng cách sử dụng Bản đồ và cơ sở dữ liệu, mang lại sự linh hoạt để thay đổi hoặc cập nhật quyền khi chạy. Những triển khai thực tế này chứng minh các tính năng mạnh mẽ và tính linh hoạt của Spring Security, biến nó thành một công cụ thiết yếu cho các nhà phát triển để đáp ứng các yêu cầu bảo mật.

Hệ thống xác thực thành viên

Hệ thống quản lý thành viên

Cấu trúc khóa học và chương trình giảng dạy chi tiết 🏃

Phần 1. Hiểu về quy trình khởi tạo

  • Chúng tôi sẽ trình bày sâu hơn về quá trình khởi tạo diễn ra khi Spring Security khởi động.

  • Cuốn sách này trình bày chi tiết cách Spring Security chuẩn bị cho hoạt động, bao gồm các bean được thiết lập trong quá trình khởi tạo, cấu trúc và luồng tổng thể, cũng như cấu hình chuỗi bộ lọc. Bằng cách hiểu quy trình này, các nhà phát triển sẽ có thể nắm bắt các nguyên tắc vận hành cơ bản của Spring Security và áp dụng hiệu quả các thiết lập bảo mật cần thiết.

Mục 2. Quy trình xác thực

  • Tìm hiểu về các phương pháp xác thực người dùng khác nhau

  • Chúng tôi sẽ đề cập đến nhiều cơ chế xác thực khác nhau, bao gồm xác thực dựa trên biểu mẫu, Xác thực cơ bản và xác thực "ghi nhớ tôi", đồng thời tìm hiểu cách chọn và triển khai phương pháp xác thực phù hợp nhất với nhu cầu của ứng dụng.

Mục 3. Kiến trúc xác thực

  • Phần này tập trung vào kiến trúc xử lý xác thực và các nguyên tắc của Spring Security.

  • Tài liệu này trình bày chi tiết vai trò và tương tác của các thành phần cốt lõi, bao gồm mối quan hệ đối tượng, trình quản lý xác thực và nhà cung cấp xác thực, trong quá trình xác thực. Để giúp bạn dễ hiểu hơn, tài liệu trình bày cách kiến trúc xác thực có thể được áp dụng trong thực tế thông qua các luồng xác thực và trường hợp sử dụng khác nhau.

Mục 4. Duy trì trạng thái xác thực

  • Phần này trình bày cách quản lý tính bền vững, chẳng hạn như lưu trữ, tham chiếu và xóa trạng thái xác thực.

  • Tìm hiểu chi tiết cách thiết lập và triển khai tính năng duy trì trạng thái xác thực hiệu quả hơn so với các phiên bản trước.

Mục 5. Quản lý phiên

  • Phần này trình bày chi tiết về kiểm soát phiên đồng thời, bảo vệ độ bám dính phiên và cài đặt chính sách phiên, bao gồm quản lý vòng đời phiên như tạo, duy trì, hết hạn và xóa thông tin phiên.

Mục 6. Xử lý ngoại lệ

  • Khóa học này trình bày phương pháp xử lý các ngoại lệ khác nhau có thể phát sinh trong quá trình xác thực và ủy quyền. Khóa học nhấn mạnh tầm quan trọng của việc xử lý ngoại lệ liên quan đến bảo mật, cung cấp cho người dùng thông báo lỗi Kind và hướng dẫn các chiến lược xử lý ngoại lệ để duy trì bảo mật hệ thống.

Mục 7. Bảo vệ chống khai thác

  • Các ứng dụng web phải đối mặt với nhiều mối đe dọa bảo mật khác nhau. Tìm hiểu cách bảo vệ ứng dụng của bạn khỏi những mối đe dọa này bằng các cơ chế bảo mật như Chia sẻ Tài nguyên Nguồn gốc (CORS), Giả mạo Yêu cầu Liên trang (CSRF) và thuộc tính cookie SameSite.

Mục 8. Quy trình ủy quyền

  • Quyền hạn xác định những hành động mà người dùng có thể thực hiện trong ứng dụng.

  • Tài liệu này giới thiệu nhiều phương pháp ủy quyền khác nhau, bao gồm ủy quyền dựa trên URL và ủy quyền cấp phương thức, đồng thời giải thích các cân nhắc về ứng dụng và bảo mật của chúng. Tài liệu này hướng dẫn các nhà phát triển thiết kế và triển khai các chính sách ủy quyền phù hợp đáp ứng các yêu cầu bảo mật của ứng dụng.

Mục 9. Kiến trúc ủy quyền

  • Chúng tôi đi sâu vào cấu trúc bên trong và các nguyên tắc của quá trình xử lý ủy quyền.

  • Chúng tôi phân tích các thành phần cốt lõi, chẳng hạn như trình quản lý ủy quyền và người ra quyết định ủy quyền, cũng như mối quan hệ của chúng và giới thiệu cách kiến trúc ủy quyền có thể giải quyết các yêu cầu bảo mật phức tạp.

. Mục 10. Xử lý sự kiện

  • Spring Security cung cấp cơ chế xử lý các sự kiện xảy ra trong quá trình xác thực và ủy quyền.

  • Tìm hiểu cách xử lý các sự kiện xác thực và ủy quyền, cũng như cách kích hoạt và nhận sự kiện trong một số trường hợp nhất định.

Mục 11. Tích hợp

  • Spring Security được tích hợp chặt chẽ với hệ sinh thái Spring.

  • Tài liệu này trình bày chi tiết cách tích hợp với Servlet API và Spring MVC, đồng thời hướng dẫn cách tích hợp Spring Security hiệu quả vào các ứng dụng Spring của bạn.

Phần 12: Cài đặt nâng cao

  • Tìm hiểu cách triển khai các thiết lập bảo mật đa dạng, thiết lập dự phòng và DSL bảo mật.

Phần 13: Các dự án thực hành

  • Đơn vị này chuyển từ lý thuyết sang thực hành, bao gồm toàn bộ ứng dụng của Spring Security thông qua việc triển khai hệ thống xác thực thành viên và hệ thống quản lý thành viên.

Lộ trình bảo mật mùa xuân

  • Hoàn thành Spring Security Mastery + Spring Security OAuth2

Đã tạo khóa học này
Giới thiệu người chia sẻ kiến thức.

Jeongsuwon (men)

  • Nhà phát triển Java hiện tại

  • Kinh nghiệm trong nhiều dự án khác nhau về SI/SM/giải pháp/di động/front-end và back-end

  • Đảm nhiệm vai trò Kiến trúc sư/PM/PL

  • Github


Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Bất cứ ai muốn hiểu rõ các khái niệm cơ bản về Spring Security

  • Những người muốn tự do mở rộng và tùy chỉnh các chức năng của Spring Security ngoài các chức năng cơ bản của nó

  • Bất kỳ ai muốn triển khai hệ thống kiểm soát quyền và xác thực ở mức độ thực tế bằng Spring Security

  • Spring Security bao gồm nội dung có thể được sử dụng bởi mọi người từ người mới bắt đầu đến người dùng trung cấp và cao cấp.

Cần biết trước khi bắt đầu?

  • Java

  • Khởi động mùa xuân

  • Mùa xuân MVC

  • JPA mùa xuân

  • RDBMS

Xin chào
Đây là

9,786

Học viên

322

Đánh giá

1,206

Trả lời

4.9

Xếp hạng

5

Các khóa học

다양한 프로젝트에서 웹/모바일/솔루션 제품 개발과 관련된 업무를 진행해 오고 있으며 분석/설계/개발 Role 을 맡아 오고 있습니다.

공공기간, 교육프로그램, 기업 프로젝트, 쇼핑몰 등의 웹 개발 및 솔루션 프로그램, 프레임워크, 오픈소스 연동 등의 아키텍처 설계 및 구조적 고도화 개선 등을 해 오고 있으며 개발, PL 등의 역할을 맡았습니다.

다양한 Open Source 와 여러 기술적인 경험들을 통해 웹의 전반적인 기술 흐름들을 익혔으며 개발 경험이 거듭될 수록 요구사항의 기능 구현에만 거치지 않고 좀 더 OOP 적인 구조의 소프트웨어로서 안전성과 성능을 고려한 아키텍처링과 튜닝의 기술들을 접목시켜 지속적으로 더 훌륭한 소프트웨어를 완성하기 위한 연구와 개발 실무를 책임감 있게 맡아 오고 있습니다.

 

Chương trình giảng dạy

Tất cả

103 bài giảng ∙ (36giờ 55phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

70 đánh giá

4.9

70 đánh giá

  • rocket70001님의 프로필 이미지
    rocket70001

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    75% đã tham gia

    프로젝트를 진행 중인데 보안, 인증/인가에서 많이 헤맸습니다. 다른 곳에서 무료 강의(스프링 시큐리티 5.x ) 클론 코딩으로 대략적인 흐름을 배우고 이후에 블로그에 있는 소스 코드들을 제 프로젝트에 맞게 수정하는 식으로 코딩했는데 그런 방식으로는 부족하다는 생각이 들었습니다. 기존의 책이나 강의들은 대부분 스프링 시큐리티 5.x 버전을 기반으로 하고 있어 6.x와 다른 부분이 많았습니다. 특히 보안 설정 부분에서 5.x은 단순 메서드를 사용하는데 6.x부터는 람다식이 필수이다 보니 하면서도 이게 맞나 싶어 일일이 구글링을 해야 하는 번거로움이 있었습니다. 구글링과 스프링 시큐리티 인 액션 2판, GPT4로 프로젝트에 JWT, OAuth2를 적용해 서버가 동작하기는 했지만 제대로 이해하지 못한 상태로 인증/인가를 적용한다는 점이 많이 찜찜해 강의를 듣게 됐습니다. 스프링 시큐리티 인 액션 2판이랑 겹치는 부분이 많으면 어쩌나 싶었는데 책에서 다루지 못한 세세한 부분을 자세하게 짚어주셔서 애매했던 개념들을 확실히 할 수 있었습니다. 처음 공부하시는 분들은 5.x 버전 + ChatGPT4 or 4o(학습 데이터가 대부분 5.x 버전이라서 deprecated된 코드를 많이 제시합니다) + 구글링으로 헤매지 마시고 그냥 이 강의 들으시는 걸 추천합니다😭 + 스프링 시큐리티가 완전 처음이시라면 Manning사에서 파는 Spring Security in Action 2nd(6.x 버전 이상) + 공식 문서도 추천. 5.x 버전 공부는 비추합니다.

    • 정민교님의 프로필 이미지
      정민교

      Đánh giá 17

      Đánh giá trung bình 4.7

      4

      76% đã tham gia

      대충 필요하다고 생각되는 것만 일단 들었습니다. 강의 분량이 굉장히 많지만 세 번 정도 돌려보시는 거 추천드립니다. 처음엔 뭔 소린지 이해도 안되는데 이걸 계속 듣고 있어야 하나 싶었는데, 두 번째 들을 때는 아 대충 무슨 느낌인지 감이 왔습니다. 한 번 더 들으면 어지간한건 이해가 될 것 같네요. 저는 두 번 돌려봤으니 한 번 더 들을 겁니다. 발음이 배속으로 조금 듣기 어렵고 커뮤니티 질문 피드백이 좀 느린 것 같아서 좀 아쉽습니다... 그 외에는 스프링 시큐리티는 이걸로 공부해도 어지간한 거는 다 배우는 것 같습니다. 추천쓰!

      • 싸누바님의 프로필 이미지
        싸누바

        Đánh giá 2

        Đánh giá trung bình 4.5

        4

        37% đã tham gia

        정말 자세하게 설명해주시고, 원리부터 꼼꼼하게 설명해주십니다. 다만.. 발음이 많이 아쉽습니다. 게다가 사투리까지 있으셔서, 못알아 들은 경우가 너무나도 많습니다. 다른 강의에 비해서 많이 힘드네요.. 좋은 강의 감사합니다.

        • smathj님의 프로필 이미지
          smathj

          Đánh giá 25

          Đánh giá trung bình 5.0

          5

          100% đã tham gia

          드디어 완강했습니다.!!! 우선 지난 버전 강의도 좋게 봤습니다 이번 시큐리티 6버전이 지난 5버전 보다 더 맘에들구요 ! 강사님께서 새로운 버전에 대한 대단히 많은 분석을 하시고 강의를 만드셨다는걸 강의를 수강할수록 알게됩니다 다른 사람에게도 도움될까 몇가지 특징을 적어봅니다. 1. 필터 초기화 파트를 제잎 앞에 배치 초기화 과정도 제일 앞서 배치된것도 정말 만족합니다 2. 이론 파트, 실습 파트 분리 강의가 각 파트별로 나눠져있어서 20~30분 내외로 보기 편했습니다 3. 각 파트별 브랜치 관리 각 파트별로 브랜치가 나눠어져 있어서 수강하는데 매우 유용합니다 4. 강의력 강의력은 두말할것없구요, 제가 본 시큐리티 강의나 교재중에 정말 빛과소금같은 강의입니다 라이브러리만 추가하고 서버만 켜도 많은 일이 일어나는걸... 단순히 기능 사용하고 끝나는 강의가 아니라서 좋습니다 그외에도 Spring 다양한 기술에 대한 인사이트를 키울 수 있습니다 바라는점... OAuth2도 신규 강의로 내주실수 있나요 !!!

          • 정수원
            Giảng viên

            소중한 평가 너무 감사합니다 긴 시간 완강 하신것도 축하 드립니다^^ 저의 강의를 뛰어넘어 smathj 님 만의 체계를 만들어 가시길 응원하겠습니다. 공부에 있어 그 어떤 것도 즐거움을 이길 수는 없습니다. smathj 의 평가에 그런 즐거움이 묻어나는 것 같아 저도 흐뭇합니다. OAuth2 는 계속 모니터링 하고 있습니다. 정확한 시기는 모르겠지만 꼭 필요한 시점에 더 업그레이드 된 내용으로 만날 수 있기를 저도 바래 봅니다 감사합니다.~~

        • 땃쥐님의 프로필 이미지
          땃쥐

          Đánh giá 16

          Đánh giá trung bình 5.0

          5

          40% đã tham gia

          강의 시간이 36시간 55분이나 되다보니 처음 강의를 볼 때는 기겁하게 됩니다. 저도 이 부분에서 처음 학습할 때는 거부감이 들었습니다... 하지만 이 강의의 진가는 디버거를 통해 내부 동작 원리를 상세하게 설명해주시는 부분입니다. 강의 내에서 디버거를 통해 세부적인 동작 원리를 상세하게 파헤치는 것을 따라하면서 스스로 디버거를 사용하는 법을 익혀나가게 되고 개발역량 향상에 큰 도움이 되었습니다. 스프링 입문 단계(core, web, jpa, boot 학습, ..)를 거친 단계에서 이 강의를 따라하면서 디버거를 통해 내부 자동 설정 및 동작 흐름을 익혀가시면 시큐리티에 대한 이해도가 빠르게 성장하는 것을 느끼실 수 있습니다. 그리고 현재 기준으로 놓고보면 시큐리티 관련 자료들이 대부분 deprecated 되거나 사용되지 않는 것들을 기준으로 된 자료들이 많은데 이 강의는 6버전 및 그 이후를 염두해두고 강의가 만들어져있습니다. 이렇게 깊이 있게 시큐리티, 더 나아가서 특정 기술을 설명하는 강의, 자료를 찾아보기 힘듭니다. 정말 강력 추천하는 강의입니다.

          • 정수원
            Giảng viên

            먼저 소중한 평가에 진심 감사드립니다^^ 저의 모든 강의 대부분이 꽤 긴 시간으로 제작이 되어 아마 땃쥐님처럼 학습하시기 전부터 많은 부담감을 가지고 있을거라 생각합니다 실제로 그렇기도 하구요 하지만 저 개인적으로는 강의 시간의 장단을 떠나 어떤 형태로든 수강생분들에게 가장 최적의 지식을 전달해야 한다는 철칙같은 기준과 원칙이 확고하기 때문에 비록 강의영상의 외적 모습이 잘 정제되고 고도화된 상품성은 가지지 못하더라도 내적 내용인 지식전달의 품질만큼은 결코 타협하거나 양보하지 않겠다는 의지가 강하다 보니 영상 시간이 예상보다 항상 늘어나게 되더군요!! 물론 적절하게 조절이 필요함을 항상 인지하고는 있습니다^^ 시간이 긴 만큼 어려운 부분은 반복해서 따라가시면 더욱 탄탄한 내공을 가지게 되실거라 생각합니다 그리고 디버깅의 매력을 느껴셨다니 제가 더 감사하네요^^ 실무에서도 잘 활용하시면 엄청난 도움이 되니 계속 습관처럼 발전시켜 나가시길 바랍니다 다시 한번 정성스런 평가 적어주셔서 감사드립니다

        2.091.405 ₫

        Khóa học khác của leaven

        Hãy khám phá các khóa học khác của giảng viên!

        Khóa học tương tự

        Khám phá các khóa học khác trong cùng lĩnh vực!