Trang này được dịch tự động. Đọc phiên bản gốc bằng tiếng Anh tại đây.
isUserVerifyingPlatformAuthenticatorAvailable() trả về false trên tất cả các trình duyệt không phải Safari, yêu cầu phải cập nhật logic phát hiện.Đừng triển khai passkey.
Ít nhất là không phải bằng mọi giá và không phải nếu bạn không có đủ nguồn lực để làm việc đó một cách bài bản.
Whitepaper Passkey cho enterprise. Hướng dẫn thực tế, mẫu triển khai và KPI cho chương trình passkeys.
Đúng, passkey là điều tuyệt vời nhất xảy ra với xác thực người tiêu dùng trong vòng một thập kỷ qua. Đúng, chúng loại bỏ lừa đảo. Đúng, chúng có thể cải thiện đáng kể UX. Nhưng passkey được thực hiện sai cách cũng có thể gây ra nhiều tác hại.
Triển khai một máy chủ WebAuthn không quá phức tạp. Thách thức thực sự là mọi thứ xung quanh nó. Vận hành passkey hiệu quả ở quy mô lớn cần phải lập kế hoạch trước. Bạn cần suy nghĩ về tất cả các vấn đề "Ngày 2" - những thực tế vận hành chỉ bộc lộ sau khi bạn đã bắt đầu triển khai passkey.
Bài viết này đề cập đến năm vấn đề Ngày 2 liên tục phá hoại các dự án passkey. Nếu bạn không thể giải quyết tất cả, bạn chưa sẵn sàng ra mắt passkey. Nếu có thể, bạn sẽ xây dựng một hệ thống xác thực an toàn hơn và dễ sử dụng hơn bất cứ điều gì mà mật khẩu có thể mang lại.
Bài viết gần đây
♟️
Các vấn đề Passkey Ngày 2: 5 rủi ro sau khi ra mắt
🔑
Điều gì làm cho việc Xử lý Tài liệu bảo mật trở nên thiết yếu đối với các Doanh nghiệp hiện đại?
♟️
Tại sao ngay cả mật khẩu phức tạp nhất của bạn cũng sẽ sớm bị bẻ khóa
♟️
Tái sử dụng mật khẩu tại Nhật Bản: vẫn ở mức 84% [2026]
♟️
Vai trò của AI trong việc phát hiện mối đe dọa mạng
Trong kỹ thuật phần mềm, "Ngày 1" là khi bạn xây dựng và ra mắt. "Ngày 2" là khi bạn vận hành, bảo trì và mở rộng những gì đã ra mắt. Đối với passkey, Ngày 1 có thể khá đơn giản:
Hầu hết các nhóm có thể thiết lập một hệ thống passkey cơ bản chạy trong vài ngày hoặc vài tuần.
Ngày 2 là nơi các dự án thất bại. Đó là lúc những người dùng thực trên thiết bị thực với các trường hợp ngoại lệ thực tế tương tác với hệ thống passkey của bạn. Đó là lúc bạn phát hiện ra bản demo hào nhoáng hoạt động hoàn hảo trên MacBook của mình lại bị hỏng trên máy tính xách tay Windows chạy Chrome sau proxy của công ty. Đó là lúc nhóm hỗ trợ của bạn tràn ngập các yêu cầu "Tôi không thể đăng nhập được nữa".
Khoảng cách giữa một bản demo passkey hoạt động được và một triển khai passkey cấp sản xuất là rất lớn. Trước đây, chúng tôi đã đề cập đến các cạm bẫy triển khai kỹ thuật và những lý do chiến lược khiến các dự án passkey thất bại. Bài viết này tập trung cụ thể vào những gì xảy ra sau khi bạn đi vào hoạt động từ góc độ vận hành.
Dưới đây là năm vấn đề Ngày 2 mà chúng ta sẽ đề cập:
Nếu bạn không thiết kế khôi phục và dự phòng một cách bài bản, bạn sẽ khóa tài khoản người dùng ở quy mô lớn hoặc âm thầm mang trở lại chính những luồng dễ bị lừa đảo mà bạn muốn loại bỏ.
Hãy xem xét một người dùng đăng ký passkey trên iPhone của họ, sau đó làm mất iPhone đó. Thông thường, một phần lớn các trường hợp khôi phục này hiện đang được xử lý bởi trình quản lý thông tin xác thực (rất có thể là iCloud Keychain trên iPhone). Chừng nào người dùng còn quyền truy cập vào tài khoản Apple của họ, họ vẫn có sẵn các passkey được đồng bộ hóa để đăng nhập trên thiết bị mới. Nhưng nếu họ không còn quyền truy cập vào tài khoản đám mây đó nữa thì sao? Đây là lúc lộ trình khôi phục thông thường của bạn phát huy tác dụng.
Giả sử bạn cho rằng khóa riêng tư vẫn có sẵn trên thiết bị mà người dùng cố gắng đăng nhập, vì vậy bạn bắt đầu quy trình đăng nhập WebAuthn. Điều này sẽ dẫn đến một hộp thoại hệ điều hành / trình duyệt yêu cầu người dùng "đăng nhập bằng passkey của bạn trên thiết bị khác". Về cơ bản, người dùng hiện bị khóa khỏi tài khoản của họ. Không có thiết bị nào khác lưu trữ passkey. Người dùng vô cùng bối rối. Nhân con số này với hàng ngàn người dùng và bạn sẽ gặp khủng hoảng hỗ trợ.
Phản ứng phổ biến là thêm đặt lại tài khoản dựa trên email làm giải pháp dự phòng. Nhưng điều này đi ngược lại mục đích của passkey: bạn vừa đưa trở lại một kênh khôi phục có thể bị lừa đảo. Một kẻ tấn công có thể xâm phạm email của người dùng giờ đây có thể vượt qua toàn bộ hệ thống passkey chống lừa đảo của bạn.
Theo quan điểm của chúng tôi, cách tiếp cận đúng là khôi phục theo nhiều lớp:
Nói chung, bạn cần quyết định những lớp khôi phục tài khoản nào có thể được biện minh từ góc độ chi phí / ma sát. Ví dụ: trong ngành bán lẻ / thương mại điện tử, bạn có thể chỉ cung cấp hai lớp đầu tiên và chấp nhận rủi ro lừa đảo do lý do tài chính. Trong các ngành khác, nơi bảo mật quan trọng hơn, bạn đi đến lớp 3 và lớp 4.
Mỗi lớp thêm độ phức tạp. Bạn cần quyết định trường hợp sử dụng của mình yêu cầu các lớp nào, xây dựng chúng, thử nghiệm chúng trên tất cả các kết hợp thiết bị và theo dõi việc sử dụng chúng. Đây là khối lượng công việc lớn hơn đáng kể so với việc tích hợp WebAuthn ban đầu.
Hầu hết các nhóm hoặc đơn giản hóa quá mức việc khôi phục (quay lại mật khẩu hoặc SMS OTP) hoặc làm phức tạp quá mức (ví dụ: yêu cầu khóa bảo mật phần cứng cho mọi lần khôi phục). Sự cân bằng phù hợp phụ thuộc vào mô hình rủi ro, cơ sở người dùng và các yêu cầu quản lý của bạn. Làm sai có nghĩa là làm suy yếu vị thế bảo mật của bạn hoặc tạo ra quá nhiều ma sát khiến người dùng từ bỏ quy trình.
Igor Gjorgjioski
Head of Digital Channels & Platform Enablement, VicRoads
We hit 80% mobile passkey activation across 5M+ users without replacing our IDP.
See how VicRoads scaled passkeys to 5M+ users — alongside their existing IDP.
Read the case studyNgười dùng của bạn không sống trong một thế giới chỉ toàn Apple sạch sẽ. Họ chuyển đổi thiết bị, trộn lẫn Windows với iOS, sử dụng các trình duyệt khác nhau và làm việc trên các thiết lập do công ty quản lý. Đó là nơi các luồng passkey bị phá vỡ nếu bạn chưa lên kế hoạch cho nó.
Hệ sinh thái passkey trải rộng trên ba nền tảng chính (Apple, Google và Microsoft), nhiều trình duyệt (Chrome, Safari, Firefox và Edge), hàng chục nhà cung cấp passkey / trình quản lý thông tin xác thực (ví dụ: 1Password, Bitwarden, Dashlane và những trình khác) và vô số sự kết hợp hệ điều hành/trình duyệt/thiết bị. Mỗi sự kết hợp có thể hoạt động hơi khác nhau, ví dụ:
Khi một người dùng tạo passkey trên iPhone của họ nhưng muốn đăng nhập trên máy tính xách tay Windows, họ có thể sử dụng xác thực đa thiết bị (thường qua mã QR và Bluetooth). Luồng này hoạt động nhưng rất mong manh:
Chúng tôi đã chứng kiến tận mắt những trường hợp ngoại lệ này trên hàng nghìn sự kết hợp thiết bị. Nếu bạn đang xây dựng passkey nội bộ, bạn cần kiểm tra và xử lý mọi trường hợp trong số đó. Nếu không thể, người dùng của bạn sẽ gặp lỗi mà nhóm hỗ trợ không thể giải thích.
Ngay cả trên cùng một thiết bị, các trình duyệt khác nhau hoạt động khác nhau. Chrome trên macOS hiển thị các hộp thoại passkey khác với Safari trên macOS. Firefox có hành vi riêng của nó. Client hints và phát hiện user agent trở nên quan trọng để cung cấp luồng chính xác cho đúng người dùng, nhưng việc phân tích cú pháp chúng một cách chính xác trên mọi sự kết hợp là một gánh nặng bảo trì không bao giờ kết thúc.
Thử nghiệm và QA passkey vốn đã là một thách thức đối với các ứng dụng web (chúng tôi đề cập chi tiết trong Vấn đề 5: Thay đổi nền tảng). Nhưng nếu sản phẩm của bạn cũng có ứng dụng iOS và Android gốc, độ phức tạp sẽ nhân lên do các quyết định kiến trúc và hành vi cụ thể của nền tảng mà các nhóm chỉ làm web không bao giờ phải đối mặt.
Quyết định đầu tiên là triển khai passkey dạng native hay thông qua WebView. Mỗi cách tiếp cận đều có sự đánh đổi:
| Khía cạnh | Triển khai Native | Triển khai WebView |
|---|---|---|
| Chất lượng UX | Tốt nhất, cảm giác native trên nền tảng | Phụ thuộc vào loại WebView |
| Bảo trì | Các codebase riêng biệt cho iOS và Android | Logic web dùng chung |
| Yêu cầu nền tảng | Phải theo dõi thay đổi SDK của Apple/Google | Phải xử lý vấn đề hỗ trợ passkey trong WebView |
| Độ phức tạp | Cao (các API dành riêng cho nền tảng) | Trung bình (nhưng loại WebView rất quan trọng) |
Riêng trên iOS, bạn có thể chọn giữa WKWebView, SFSafariViewController, SFAuthenticationSession và ASWebAuthenticationSession - mỗi loại có đặc điểm hỗ trợ passkey khác nhau. Trên Android, Chrome Custom Tabs hoạt động khác với WebViews tiêu chuẩn. Đây là những quyết định mà các nhóm web-only không bao giờ phải đưa ra và mỗi lựa chọn lại tạo ra bề mặt bảo trì riêng.
Ngoài quyết định kiến trúc, iOS và Android xử lý passkey khác nhau ở cấp hệ điều hành:
NotAllowedError, trên iOS là SimpleAuthenticationServices.AuthorizationError và trên Credential Manager của Android là User cancelled the operation - hãy xem bản đồ lỗi WebAuthn trên môi trường production để biết ánh xạ lỗi đa nền tảng đầy đủNếu bạn vận hành cả ứng dụng web và ứng dụng native, bạn không chỉ nhân đôi công sức QA mà là nhân ba. Web, iOS và Android đều hoạt động như các môi trường passkey riêng biệt cần thử nghiệm từ đầu đến cuối và giám sát độc lập. Và không giống như web, nơi bạn có thể triển khai bản sửa lỗi ngay lập tức, các bản sửa lỗi ứng dụng gốc bị kiểm soát bởi chu kỳ đánh giá của cửa hàng ứng dụng.
"Có hỗ trợ passkey" không đồng nghĩa với "được sử dụng passkey". Nếu bạn không có chiến lược triển khai và đo lường, mức độ áp dụng sẽ gây thất vọng và dự án sẽ bị coi là thất bại trong nội bộ.
Chúng tôi đã đề cập sâu rộng đến vấn đề này trong bài viết về lý do các triển khai passkey thất bại: nếu người dùng không chuyển sang dùng passkey, dự án đã thất bại. Mật khẩu vẫn chiếm ưu thế, chi phí SMS OTP vẫn cao, rủi ro lừa đảo vẫn tồn tại và tổ chức của bạn không nhận được lợi tức từ khoản đầu tư kỹ thuật đáng kể.
Cơ sở kinh doanh cho việc áp dụng passkey là rất mạnh mẽ nhưng chỉ khi việc áp dụng thực sự xảy ra. Chúng tôi đã thấy các doanh nghiệp ra mắt passkey với việc triển khai kỹ thuật tuyệt vời nhưng mức độ áp dụng chưa đến 5% vì không ai nghĩ đến chiến lược ra mắt và áp dụng.
Thúc đẩy việc áp dụng passkey là một thách thức sản phẩm đòi hỏi:
Dựa trên kinh nghiệm của chúng tôi với các triển khai passkey quy mô lớn, đây là những gì doanh nghiệp nên nhắm tới:
| Số liệu | Yếu | Chấp nhận được | Mạnh |
|---|---|---|---|
| Tỷ lệ tạo passkey (trên số người dùng đủ điều kiện) | <10% | 10-60% | >60% |
| Tỷ lệ đăng nhập bằng passkey (trên tổng số lượt đăng nhập) | <5% | 5-40% | >40% |
Nếu số liệu áp dụng của bạn trông giống như cột "Yếu" sau ba tháng, dự án đang gặp rắc rối. Nếu không có phân tích để đo lường điều này, bạn thậm chí sẽ không biết.
Cập nhật hệ điều hành và trình duyệt thay đổi lời nhắc, hành vi tự động điền và luồng dự phòng. Nếu bạn không có giám sát liên tục, bạn sẽ gặp lỗi hồi quy và nhận vé hỗ trợ mà không có cảnh báo.
Chúng tôi vừa xuất bản một tổng quan toàn diện về các lỗi WebAuthn xảy ra trong môi trường sản xuất.
Không giống như mật khẩu (chỉ là chuỗi văn bản mà máy chủ của bạn xác thực), passkey phụ thuộc vào sự tích hợp sâu với hệ điều hành, trình duyệt và trình quản lý thông tin xác thực. Khi Apple ra mắt phiên bản iOS mới, lời nhắc tạo passkey có thể trông khác. Khi Chrome cập nhật logic tự động điền, quy trình đăng nhập của bạn có thể bị hỏng. Khi một trình quản lý mật khẩu phát hành phiên bản mới, nó có thể bắt đầu chặn các yêu cầu passkey theo những cách mà bạn không lường trước được.
Một ví dụ gần đây là lỗi iOS 26.2 khi isUserVerifyingPlatformAuthenticatorAvailable() trả về false trên tất cả các trình duyệt không phải Safari (Chrome, Edge, Firefox), đòi hỏi logic phát hiện nhận thức nền tảng sử dụng getClientCapabilities() như một cách giải quyết tạm thời.
Để đảm bảo bạn nhận biết được tất cả các lỗi tiềm ẩn và theo dõi mức độ áp dụng, bạn cần thiết lập nền tảng quan sát xác thực (observability stack) của mình. Chúng tôi khuyên bạn nên có ít nhất những điều sau đây:
NotAllowedError) và lỗi không mong muốn (AbortError tăng vọt do lỗi đồng thời hoặc lỗi passkey mới trong Credential Manager sau khi cập nhật Android)Đây là loại cơ sở hạ tầng phân tích xác thực mà hầu hết các nhóm không xây dựng cho đến khi họ gặp sự cố. Đến lúc đó, lòng tin của người dùng và uy tín nội bộ của dự án đã bị tổn hại.
Chi phí thực sự của việc triển khai passkey không nằm ở phần xây dựng ban đầu. Đó là bảo trì liên tục:
Đăng ký Passkeys Substack để nhận tin mới nhất.
Căn cứ vào những vấn đề Ngày 2 này, đây là đánh giá trung thực về thời điểm bạn nên và không nên ra mắt passkey.
Dốc toàn lực vì các lý do quy định mà không lập kế hoạch phù hợp có thể làm tăng chi phí đáng kể. Một hệ thống passkey triển khai kém còn tệ hơn là không có hệ thống nào: nó làm xói mòn lòng tin của người dùng, tạo thêm gánh nặng hỗ trợ và mang lại cho các bên liên quan nội bộ lý do để hủy bỏ dự án.
Những vấn đề Ngày 2 được mô tả trong bài viết này chính là lý do nhiều doanh nghiệp chọn mua thay vì tự xây dựng cơ sở hạ tầng passkey. Xây dựng một máy chủ WebAuthn là phần dễ. Việc vận hành một hệ thống passkey cấp sản phẩm trên hàng ngàn kết hợp thiết bị, với việc khôi phục, giám sát và phân tích mức độ áp dụng phù hợp, chính là ranh giới giữa một bản demo và một hệ thống triển khai thực sự.
Corbado tồn tại chính vì những vấn đề Ngày 2 thực sự khó khăn. Nền tảng của chúng tôi xử lý các phức tạp vận hành để bạn không phải tự xây dựng và bảo trì.
Corbado cung cấp các luồng khôi phục có sẵn (out-of-the-box) với mức độ bảo mật thích ứng. Từ chiến lược passkey được đồng bộ hóa đến xác thực đa thiết bị và xác minh danh tính tự động. Logic khôi phục được tích hợp sẵn và liên tục được cập nhật.
SDK frontend của chúng tôi đã được kiểm tra trước trên hàng ngàn kết hợp hệ điều hành, trình duyệt và nhà cung cấp passkey. Phát hiện thiết bị, xử lý giao diện có điều kiện (conditional UI) và định tuyến dự phòng diễn ra tự động. Khi một phiên bản trình duyệt mới làm hỏng điều gì đó, chúng tôi sẽ sửa nó trong SDK trước khi người dùng của bạn nhận ra.
Corbado hỗ trợ việc triển khai passkey trên cả môi trường native và WebView thông qua các SDK trừu tượng hóa sự khác biệt nền tảng. Bạn có thể tập trung vào trải nghiệm UX của ứng dụng trong khi chúng tôi xử lý phần kỹ thuật passkey xuyên suốt trên iOS và Android.
Bảng điều khiển phân tích của chúng tôi theo dõi mọi số liệu quan trọng: tỷ lệ tạo passkey, tỷ lệ đăng nhập thành công, tỷ lệ dự phòng và số liệu phân tích theo cấp độ thiết bị. Bạn sẽ có được những hiểu biết thực tế để thúc đẩy sự áp dụng, thay vì chỉ là dữ liệu thô.
Corbado liên tục theo dõi các thay đổi hệ điều hành và trình duyệt ảnh hưởng đến passkey. SDK của chúng tôi được cập nhật một cách chủ động. Việc triển khai passkey của bạn vẫn ổn định ngay cả khi bối cảnh nền tảng thay đổi.
Passkey là tiêu chuẩn vàng của xác thực. Điều đó không cần bàn cãi. Nhưng con đường từ "hỗ trợ passkey" đến "passkey hoạt động ổn định ở quy mô lớn" được lát bằng những vấn đề Ngày 2 mà hầu hết các đội nhóm thường đánh giá thấp.
Năm vấn đề mà chúng tôi đã đề cập (khôi phục, các trường hợp ngoại lệ đa thiết bị, độ phức tạp của ứng dụng gốc, mức độ áp dụng và các thay đổi của nền tảng) không hề hiếm gặp. Đó là những thách thức hoạt động cốt lõi của bất kỳ hệ thống passkey thương mại nào. Phớt lờ chúng không làm chúng biến mất. Nó chỉ có nghĩa là người dùng sẽ tự khám phá ra chúng trước bạn.
Khuyến nghị chân thành của tôi: nếu bạn không có bí quyết và nguồn lực để triển khai passkey đúng cách, thì đừng ra mắt nó. Hãy đầu tư vào năng lực nội tại (sản phẩm, kỹ thuật, an ninh và phân tích) hoặc hợp tác với một đối tác đã giải quyết được những vấn đề này. Kết quả tồi tệ nhất là một đợt triển khai passkey nửa vời và sau đó bị hủy bỏ chỉ vì không ai có kế hoạch cho Ngày 2.
Corbado là Passkey Intelligence Platform dành cho các đội CIAM vận hành xác thực consumer ở quy mô lớn. Chúng tôi giúp bạn nhìn thấy điều mà log IDP và các công cụ analytics thông thường không thấy: những thiết bị, phiên bản OS, trình duyệt và trình quản lý credential nào hỗ trợ passkey, tại sao quá trình đăng ký không chuyển thành đăng nhập, luồng WebAuthn fail ở đâu, và khi nào một bản cập nhật OS hay trình duyệt làm hỏng đăng nhập một cách âm thầm — tất cả mà không cần thay thế Okta, Auth0, Ping, Cognito hay IDP nội bộ của bạn. Hai sản phẩm: Corbado Observe bổ sung observability cho passkey và mọi phương thức đăng nhập khác. Corbado Connect mang đến managed passkey với analytics tích hợp (song hành cùng IDP của bạn). VicRoads vận hành passkey cho hơn 5M người dùng với Corbado (kích hoạt passkey +80%). Trao đổi với chuyên gia Passkey →
Năm vấn đề về vận hành là các luồng khôi phục và dự phòng không an toàn, các trường hợp ngoại lệ trong hệ sinh thái đa thiết bị, độ phức tạp của ứng dụng gốc, mức độ áp dụng của người dùng thấp và các lỗi hồi quy âm thầm từ các bản cập nhật của hệ điều hành và trình duyệt. Hầu hết các nhóm tập trung vào việc tích hợp WebAuthn ban đầu và đánh giá thấp những thách thức sau khi ra mắt này, đó là lý do tại sao nhiều dự án passkey bị hủy bỏ hoặc âm thầm từ bỏ trong nội bộ.
Người dùng có thể xác thực qua luồng xác thực đa thiết bị quét mã QR và Bluetooth, nhưng điều này yêu cầu bật Bluetooth trên cả hai thiết bị và có thể bị chặn bởi các chính sách MDM của công ty và tường lửa. Trải nghiệm người dùng (UX) khác nhau đáng kể giữa các trình duyệt và người dùng thường không hiểu tại sao họ lại quét mã QR, làm cho việc định tuyến dự phòng nhận biết thiết bị và giao tiếp rõ ràng trở nên quan trọng đối với việc triển khai tại doanh nghiệp.
Sự áp dụng mạnh mẽ có nghĩa là tỷ lệ tạo passkey trên 60% người dùng đủ điều kiện và tỷ lệ đăng nhập bằng passkey trên 40% của tất cả các lần đăng nhập. Các tỷ lệ tạo dưới 10% và đăng nhập dưới 5% sau ba tháng là tín hiệu cho thấy một đợt triển khai thất bại. Việc đo lường điều này đòi hỏi một cơ sở hạ tầng chuyên dụng theo dõi tỷ lệ tạo, tỷ lệ đăng nhập thành công, tỷ lệ dự phòng và tỷ lệ từ bỏ được phân chia theo tổ hợp thiết bị và hệ điều hành.
Việc triển khai Native cung cấp UX tốt nhất trong phân khúc nhưng yêu cầu cơ sở mã iOS và Android riêng biệt với việc xử lý API cụ thể cho từng nền tảng và các đường ống (pipelines) QA độc lập. Phương pháp tiếp cận WebView chia sẻ logic web nhưng gây ra sự không nhất quán trong việc hỗ trợ passkey tùy thuộc vào loại WebView. Chỉ riêng trên iOS, sự lựa chọn giữa WKWebView, SFSafariViewController và ASWebAuthenticationSession đều mang các đặc điểm hỗ trợ passkey khác nhau cần được đánh giá trước khi cam kết theo một kiến trúc nào.
Việc khôi phục đơn giản hóa như thiết lập lại dựa trên email sẽ đưa các kênh dễ bị lừa đảo trở lại, trong khi việc khôi phục quá nghiêm ngặt như yêu cầu khóa bảo mật phần cứng bắt buộc sẽ tạo ra sự từ bỏ. Cách tiếp cận được đề xuất là khôi phục theo nhiều lớp: passkey được đồng bộ hóa là chiến lược chính, xác thực đa thiết bị bằng mã QR là lớp thứ hai, xác minh danh tính tự động với tính năng kiểm tra sự sống (liveness checks) là lớp thứ ba và thông tin xác thực có thể xác minh kỹ thuật số (digital verifiable credentials) là lớp thứ tư. Việc chọn những lớp nào để thực hiện tùy thuộc vào mô hình mối đe dọa, cơ sở người dùng và yêu cầu pháp lý của bạn.
Bài viết liên quan
Mục lục