You are on page 1of 13

ĐẠI HỌC UEH

TRƯỜNG CÔNG NGHỆ VÀ THIẾT KẾ


KHOA CÔNG NGHỆ THÔNG TIN KINH DOANH
BỘ MÔN CÔNG NGHỆ THÔNG TIN
----------o0o----------

BÁO CÁO MÔN HỌC


BẢO MẬT THÔNG TIN TRONG THƯƠNG MẠI ĐIỆN TỬ
Đề tài:

Nhóm thực hiện: Nhóm 7


GVHD: TS. Hoàng Anh

Họ và tên Mã số sinh viên

Trịnh Khang Bảo 31211023332

Đinh Minh Dương 31211023119

Khương Thế Duy 31211023334

Lê Phi Long 31211027154

Trần Minh Nghĩa 31211023272

0
DANH MỤC HÌNH ẢNH
DANH MỤC BẢNG BIỂU
DANH SÁCH THÀNH VIÊN
LỜI CẢM ƠN
LỜI MỞ ĐẦU

I. Giới thiệu: (Bảo)


1. Bối cảnh và tầm quan trọng của bảo mật thông tin trong thương mại điện tử:
● Nêu số liệu thống kê về các vụ tấn công mạng, rò rỉ dữ liệu trong TMĐT.
● Giải thích tác động tiêu cực của việc thiếu bảo mật thông tin..
2. Tổng quan về xác thực người dùng và JSON Web Tokens (JWT):
● Giới thiệu khái niệm xác thực người dùng và vai trò quan trọng của nó.
● Trình bày khái niệm, cấu trúc và tính năng của JWT.
● Giải thích cơ chế hoạt động của JWT.
● Nêu lợi ích của việc sử dụng JWT trong xác thực người dùng.
II. Cơ sở lý thuyết
1. Xác thực người dùng (Long)
1.1. Định nghĩa và vị trí quan trọng trong hệ thống
1.2. Phương pháp xác thực truyền thống và hiện đại
Phân tích các phương pháp xác thực truyền thống và hiện đại:
● Basic Auth.
● Digest Auth.
● OAuth2.
So sánh ưu nhược điểm của từng phương pháp.
Đánh giá ưu điểm và nhược điểm của các phương pháp xác thực
2. JSON Web Tokens (JWT) (Duy)
2.1. Khái niệm, cấu trúc và tính năng
2.2. Quy trình xác thực người dùng với JWT
2.3. Lợi ích của việc sử dụng JWT trong quá trình xác thực người dùng
III. Triển khai mã nguồn minh họa cho JWT (Dương)

IV. Đánh giá và kết luận (Nghĩa)


1. Ưu điểm và giới hạn, rủi ro của việc sử dụng JWT trong xác thực người dùng
1.1. Ưu điểm
a. Đăng nhập Một lần (SSO):
Đăng nhập Một lần (Single Sign-On - SSO) đã trở thành một trong những công nghệ
quan trọng không chỉ trong việc tối ưu hóa trải nghiệm người dùng mà còn trong việc
củng cố an ninh thông tin và quản lý người dùng.

1
Theo báo cáo từ Gartner, triển khai SSO có thể giảm đến 40% chi phí liên quan đến quản
lý danh sách người dùng và quản lý mật khẩu. Điều này là kết quả của việc giảm bớt khả
năng phải duy trì và quản lý nhiều tài khoản và mật khẩu khác nhau cho từng ứng dụng
hay dịch vụ. Thay vào đó, người dùng chỉ cần một lần đăng nhập và sau đó sẽ được xác
thực truy cập tự động vào các hệ thống khác mà họ được phép truy cập. Điều này giúp
giảm bớt gánh nặng về quản lý tài khoản và mật khẩu, đồng thời tăng cường an ninh
thông tin bằng cách giảm nguy cơ do việc sử dụng mật khẩu yếu hoặc bị đánh cắp.

Nghiên cứu của Ponemon Institute cũng chỉ ra rằng 72% tổ chức đánh giá SSO là quan
trọng hoặc rất quan trọng đối với việc cải thiện an ninh thông tin và quản lý người dùng.
Bằng cách tạo ra một cơ sở hạ tầng xác thực chung, SSO giúp giảm thiểu rủi ro từ các
cuộc tấn công mạng như tấn công Brute Force hay tấn công đánh cắp thông tin xác thực.
Ngoài ra, SSO cũng cung cấp một cơ chế kiểm soát truy cập mạnh mẽ, cho phép các tổ
chức quản lý và giám sát quyền truy cập của từng người dùng đối với từng ứng dụng hay
dịch vụ một cách hiệu quả.

Sử dụng JWTs (JSON Web Tokens) cho SSO không chỉ giúp tiết kiệm thời gian mà còn
nâng cao hiệu suất hoạt động của hệ thống.

Trong môi trường SSO, JWT thường được sử dụng để xác thực người dùng sau khi họ đã
đăng nhập thành công vào hệ thống. Quy trình diễn ra như sau khi người dùng cố gắng
truy cập vào một trang của Engage Digital (Engage Digital là một ứng dụng hoặc dịch vụ
đã tích hợp SSO để cung cấp trải nghiệm đăng nhập một lần cho người dùng):
1. Người dùng truy cập vào trang của Engage Digital: Người dùng đã đăng nhập vào
hệ thống SSO và sau đó truy cập vào trang của ứng dụng Engage Digital.
2. Phát hiện SSO và chuyển hướng: Hệ thống phát hiện SSO đã được kích hoạt cho
miền này và tự động chuyển hướng người dùng đến URL đăng nhập từ xa của
JWT.
3. Xác thực người dùng: Tại URL đăng nhập từ xa của JWT, người dùng được xác
thực thông qua hệ thống SSO.
4. Tạo token JWT: Sau khi xác thực thành công, hệ thống tạo ra một token JWT bằng
cách sử dụng mã bí mật chia sẻ và dữ liệu của người dùng đã xác thực.
5. Chuyển hướng trở lại và kiểm tra token: Người dùng được chuyển hướng trở lại
đến URL Điểm cuối JWT của Engage Digital, cùng với token JWT. Hệ thống
kiểm tra tính hợp lệ của token JWT, đảm bảo dữ liệu không bị sửa đổi và xác thực
người dùng dựa trên external_id trong token.

2
b. Xác thực Stateless
Xác thực Stateless, đặc biệt là thông qua việc sử dụng JSON Web Tokens (JWT), đã trở
thành một phương pháp phổ biến trong việc xác thực người dùng trong ứng dụng web và
di động. Tính stateless của JWT mang lại nhiều lợi ích quan trọng, giúp tối ưu hóa hiệu
suất hệ thống và tăng cường bảo mật thông tin.

Trước hết, tính stateless của JWT làm cho việc mở rộng hệ thống trở nên dễ dàng hơn.
Trong các phương pháp truyền thống như xác thực dựa trên phiên (session-based
authentication), máy chủ phải lưu trữ trạng thái phiên cho mỗi người dùng đã đăng nhập.
Điều này có thể tạo ra áp lực lớn đối với hệ thống, đặc biệt là khi số lượng người dùng và
quy mô của ứng dụng tăng lên. Tuy nhiên, với JWT, mọi thông tin cần thiết để xác thực
người dùng được chứa trong token chính, không cần phải lưu trữ trạng thái phiên trên
máy chủ. Điều này giúp giảm bớt gánh nặng cho máy chủ và tăng khả năng mở rộng của
hệ thống.

Một nghiên cứu của TechRepublic còn chỉ ra rằng việc sử dụng JWT authentication có
thể giảm tải cho máy chủ lên đến 50% so với các phương pháp stateful khác. Khi sử dụng
JWT, máy chủ không cần phải duy trì trạng thái phiên cho mỗi người dùng và không cần
phải thực hiện các thao tác lưu trữ và truy vấn dữ liệu liên quan. Thay vào đó, máy chủ
có thể đơn giản chỉ cần giải mã và xác thực token, rồi trả về kết quả mà không cần phải
lưu trữ bất kỳ dữ liệu phiên nào. Điều này giúp giảm bớt tải cho máy chủ, cải thiện hiệu
suất hoạt động và giảm thiểu nguy cơ mất mát dữ liệu.
c. Phân quyền

3
Phân quyền đóng một vai trò quan trọng trong việc bảo vệ thông tin và đảm bảo an toàn
cho hệ thống thông tin của một tổ chức. Nghiên cứu của Verizon cũng đã chỉ ra tầm quan
trọng của việc triển khai các biện pháp phân quyền hiệu quả trong việc ngăn chặn các vi
phạm dữ liệu. Theo nghiên cứu này, 68% các vi phạm dữ liệu được báo cáo có thể được
ngăn chặn bằng cách triển khai các biện pháp phân quyền hiệu quả.

.JWTs (JSON Web Tokens) đã giúp cải thiện quá trình phân quyền bằng cách chứa thông
tin về vai trò và quyền hạn của người dùng trong token, từ đó giúp máy chủ đưa ra quyết
định phân quyền mà không cần phải thực hiện truy vấn cơ sở dữ liệu.

Một trong những ưu điểm lớn nhất của việc sử dụng JWTs cho phân quyền là khả năng
chứa thông tin chi tiết về vai trò và quyền hạn của người dùng trong token. Thông tin này
bao gồm các thông tin như vai trò của người dùng (ví dụ: quản trị viên, người dùng
thường), quyền hạn cụ thể (ví dụ: quyền xem, chỉnh sửa, xóa), và phạm vi của các quyền
hạn đó (ví dụ: quyền hạn đối với một phần tử cụ thể trong hệ thống). Khi máy chủ nhận
được token JWT từ người dùng, nó có thể dễ dàng giải mã và trích xuất các thông tin này
để xác định vai trò và quyền hạn của người dùng mà không cần phải thực hiện truy vấn
cơ sở dữ liệu phức tạp.

Đây là một phác thảo về quy trình ủy quyền JWT điển hình, từ khi người dùng xác thực
đến khi máy chủ xác minh và cung cấp quyền truy cập vào tài nguyên. Dưới đây là các
bước cụ thể:

1. Xác thực: Máy khách gửi thông tin xác thực của người dùng đến máy chủ. Máy
chủ sau đó xác thực người dùng và tạo JWT chứa thông tin về người dùng.

2. Phát hành mã thông báo: Máy chủ gửi JWT trở lại máy khách, nơi nó được lưu trữ
để sử dụng trong tương lai.

3. Gửi mã thông báo: Khi máy khách muốn truy cập vào tài nguyên được bảo vệ trên
máy chủ, nó sẽ gửi JWT trong tiêu đề Ủy quyền của yêu cầu HTTP.

4. Xác minh mã thông báo: Máy chủ nhận được yêu cầu và xác minh JWT bằng cách
kiểm tra chữ ký của nó bằng khóa bí mật đã được sử dụng để ký nó. Nếu JWT hợp
lệ, máy chủ sẽ trích xuất thông tin có trong đó và sử dụng nó để xác định những
hành động mà người dùng được phép thực hiện.

5. Cho phép yêu cầu: Nếu người dùng được phép truy cập vào tài nguyên, máy chủ
sẽ trả về dữ liệu được yêu cầu. Nếu không, máy chủ sẽ trả về một thông báo lỗi.

4
d. Cross-Origin Resource Sharing (CORS)
Chia sẻ nguồn tài nguyên gốc qua các miền (CORS) là một khía cạnh quan trọng của việc
phát triển ứng dụng web hiện đại, nhưng cũng mang lại nhiều thách thức về bảo mật.
Trong bối cảnh này, việc sử dụng JSON Web Tokens (JWTs) đã trở thành một giải pháp
phổ biến để tăng cường an ninh và bảo vệ thông tin người dùng khi giao tiếp an toàn giữa
các miền.

JWTs có thể được sử dụng để giao tiếp an toàn giữa các miền trong ứng dụng web bằng
cách bao gồm chúng trong các tiêu đề HTTP. Khi một yêu cầu được gửi từ một miền này
đến một miền khác, JWT có thể được gửi kèm theo để xác thực và ủy quyền người dùng.
Điều này giúp đảm bảo rằng chỉ những người dùng được ủy quyền mới có thể truy cập
vào các tài nguyên được chia sẻ giữa các miền, đồng thời bảo vệ thông tin cá nhân và dữ
liệu quan trọng.

Một báo cáo từ Open Web Application Security Project (OWASP) đã chỉ ra rằng việc sử
dụng JWTs trong CORS có thể giúp giảm đến đáng kể nguy cơ tấn công liên quan đến
việc chia sẻ nguồn tài nguyên gốc. JWTs cung cấp một cơ chế an toàn và linh hoạt để xác
thực người dùng và quản lý quyền truy cập trên các miền khác nhau, từ đó giảm thiểu rủi
ro từ các cuộc tấn công như tấn công giả mạo và tấn công giữa các trang web (Cross-Site
Scripting - XSS).
1.2. Giới hạn, rủi ro
a. Kích thước của Token
Kích thước của token JWT (JSON Web Token) là một yếu tố quan trọng cần xem xét
trong quá trình thiết kế và triển khai các hệ thống xác thực và ủy quyền. Dữ liệu từ một
nghiên cứu của Google đã chỉ ra rằng kích thước của một JWT có thể dao động từ 1 KB
đến 4 KB, phụ thuộc vào số lượng thông tin người dùng được chứa trong token.

Đối với một ứng dụng web có hàng nghìn người dùng đăng nhập mỗi ngày, việc xử lý
hàng triệu yêu cầu trong đó mỗi yêu cầu gửi và nhận một token có kích thước lớn có thể
gây ra một lượng lưu lượng mạng đáng kể. Kích thước lớn của token có thể ảnh hưởng
đến hiệu suất và tốc độ của ứng dụng, đặc biệt khi có số lượng lớn yêu cầu được gửi đi và
xử lý hàng ngày.
b. Kiếm soát thời gian sống của Token
Quản lý thời gian sống của token là một phần quan trọng và đôi khi là một thách thức đối
với các hệ thống phân tán, đặc biệt là trong bối cảnh các ứng dụng web hiện đại ngày nay
đòi hỏi sự linh hoạt và độ chính xác trong việc xác định thời gian hiệu lực của token.

Một trong những thách thức lớn khi quản lý thời gian sống của token là đảm bảo rằng
chúng không tồn tại quá lâu, dẫn đến nguy cơ cho việc truy cập trái phép vào hệ thống.

5
Tuy nhiên, đồng thời cũng cần phải tránh việc token bị hủy quá sớm, dẫn đến sự phiền
toái cho người dùng và làm giảm trải nghiệm của họ.

Nghiên cứu từ OWASP cũng đã chỉ ra rằng việc quản lý thời gian sống của token đóng
vai trò quan trọng trong việc ngăn chặn các cuộc tấn công mạng. Thực tế, 85% các cuộc
tấn công mạng liên quan đến việc sử dụng token đều liên quan đến việc quản lý thời gian
sống của chúng. Điều này chỉ ra rằng việc thiết lập và duy trì một cơ chế quản lý thời
gian sống của token hiệu quả là cực kỳ quan trọng để bảo vệ hệ thống khỏi các cuộc tấn
công và đảm bảo tính an toàn của dữ liệu và người dùng.
c. Rủi ro về bảo mật
Rủi ro về bảo mật liên quan đến việc sử dụng JWTs (JSON Web Tokens) là một trong
những vấn đề quan trọng cần được xem xét và giải quyết một cách cẩn thận. Trong khi
JWTs cung cấp một cơ chế hiệu quả để xác thực và ủy quyền trong các ứng dụng web,
nhưng nếu không được bảo vệ đúng cách, chúng có thể trở thành điểm yếu trong hệ
thống, mở ra cánh cửa cho các cuộc tấn công giả mạo.

Một trong những rủi ro chính liên quan đến bảo mật JWTs là nếu khóa bí mật được sử
dụng để ký các token bị đánh cắp, kẻ tấn công có thể sử dụng khóa này để tạo ra các
token giả mạo. Khi token giả mạo được tạo ra, kẻ tấn công có thể giả mạo danh tính của
người dùng và truy cập vào các tài nguyên hoặc dữ liệu mà họ không được phép.

Bảo vệ khóa bí mật là một yếu tố vô cùng quan trọng để ngăn chặn các cuộc tấn công giả
mạo này. Điều này bao gồm việc sử dụng các phương pháp bảo mật như mã hóa mạnh
mẽ, quản lý khóa an toàn và việc giảm thiểu việc tiết lộ khóa bí mật.

Thêm vào đó, một nghiên cứu từ Ponemon Institute chỉ ra rằng việc xử lý các cuộc tấn
công giả mạo có thể tạo ra một chi phí trung bình lên đến 3 triệu đô la cho mỗi tổ chức.
Điều này làm nổi bật tầm quan trọng của việc đầu tư và triển khai các biện pháp bảo mật
mạnh mẽ để bảo vệ khóa bí mật và ngăn chặn các cuộc tấn công giả mạo.
d. Không thể hủy Token
Một trong những thách thức lớn khi sử dụng JWTs (JSON Web Tokens) trong hệ thống
xác thực và ủy quyền là việc không có khả năng hủy token trước khi nó hết hạn. Điều này
có nghĩa là JWT vẫn còn hiệu lực cho đến khi nó hết thời gian hiệu lực được xác định
trước, và không thể bị hủy trước khi đó. Tính không thể hủy của token có thể gây ra một
loạt vấn đề về bảo mật và quản lý quyền truy cập trong một số tình huống cụ thể.

Một trong những tình huống mà việc không có khả năng hủy token trở nên đặc biệt nguy
hiểm là khi quyền truy cập của người dùng cần phải bị thu hồi ngay lập tức, chẳng hạn do
phát hiện một vụ vi phạm bảo mật. Trong trường hợp này, việc không thể hủy token có

6
thể cho phép kẻ tấn công tiếp tục truy cập vào hệ thống và các tài nguyên được bảo vệ
cho đến khi token hết hạn, gây ra nguy cơ lớn cho tính bảo mật của hệ thống.

Nghiên cứu từ Forrester cũng đã chỉ ra rằng tổn thất do việc không có khả năng hủy
token có thể lên đến hàng trăm nghìn đô la cho mỗi vụ vi phạm. Điều này làm nổi bật sự
cần thiết của việc triển khai cơ chế hủy token hiệu quả và linh hoạt, để có thể ngăn chặn
và giảm thiểu các rủi ro bảo mật một cách hiệu quả.
e. Giới hạn cập nhật Token
Một trong những đặc điểm của JWTs (JSON Web Tokens) là tính không thể cập nhật sau
khi được phát hành. Điều này có nghĩa là thông tin trong token, như vai trò hoặc quyền
hạn của người dùng, không thể được thay đổi sau khi token đã được tạo ra. Trong một số
trường hợp, điều này có thể tạo ra những thách thức liên quan đến quản lý quyền truy cập
và an ninh hệ thống.

Với việc không có khả năng cập nhật token, khi vai trò hoặc quyền hạn của người dùng
thay đổi, họ có thể phải đăng nhập lại để nhận được một token mới với thông tin được
cập nhật. Điều này không chỉ gây ra sự phiền toái cho người dùng mà còn làm tăng tính
phức tạp và chi phí trong quản lý quyền truy cập của hệ thống.
2. So sánh với các phương pháp xác thực khác
JWTs đã trở nên rất phổ biến trong các ứng
dụng web và di động, đặc biệt là trong việc
xác thực và ủy quyền. Cộng đồng phát triển
JWTs
mạnh mẽ và rộng lớn của JWTs cung cấp sự
hỗ trợ và phản hồi tích cực từ các nhà phát
triển trên toàn thế giới.

OAuth là một giao thức phổ biến cho việc


ủy quyền trong ứng dụng web và dịch vụ
web. OAuth nhận được sự hỗ trợ mạnh mẽ
OAuth
từ các nhà cung cấp dịch vụ lớn như Google,
Độ phổ biến Facebook, và Twitter, cũng như từ cộng
đồng mã nguồn mở.

OpenID Connect là một phương thức xác


thực phổ biến trong cộng đồng phát triển
OpenID Connect phần mềm, đặc biệt trong các ứng dụng đa
nền tảng và dịch vụ đám mây. Có ít tài liệu
và nguồn tài nguyên so với JWTs và OAuth

Có ít tài liệu và nguồn tài nguyên công khai


về SAML so với các phương pháp khác như
SAML
JWTs và OAuth. Mặc dù ít được sử dụng
trong các ứng dụng web và di động cá nhân,

7
nhưng SAML vẫn được sử dụng rộng rãi
trong các môi trường doanh nghiệp và hệ
thống phân tán.

Tính linh hoạt của JWTs xuất phát từ cấu


trúc mở và đa dạng của chúng. JWTs có thể
chứa bất kỳ dữ liệu nào, cho phép chúng
JWTs
được sử dụng cho nhiều mục đích khác nhau
từ xác thực người dùng đến ủy quyền và
truyền thông tin.

OAuth Tokens cũng khá linh hoạt và có thể


được sử dụng trong nhiều tình huống khác
OAuth nhau. Chúng thường được sử dụng để ủy
quyền truy cập vào tài nguyên từ các ứng
dụng và dịch vụ khác nhau.

OpenID Connect Tokens cung cấp một cách


tiếp cận linh hoạt cho việc xác thực người
Tính Linh Hoạt dùng và chia sẻ thông tin xác thực giữa các
OpenID Connect ứng dụng. Chúng thường được sử dụng
trong các hệ thống đòi hỏi tính linh hoạt và
khả năng đăng nhập đơn giản cho người
dùng.

SAML Tokens thường được sử dụng trong


môi trường doanh nghiệp và có tính linh
hoạt tương đối trong việc chia sẻ thông tin
xác thực giữa các hệ thống khác nhau.
SAML Tuy nhiên, tính linh hoạt của SAML Tokens
có thể hạn chế hơn so với các phương pháp
khác khi áp dụng trong các ứng dụng di
động hoặc trong môi trường Internet công
cộng.

Tính bảo mật của JWTs phụ thuộc chủ yếu


vào việc bảo vệ khóa bí mật được sử dụng
để ký token.
JWTs có thể mã hóa để ẩn đi thông tin,
nhưng điều quan trọng là không nên chứa
thông tin nhạy cảm trong phần nội dung của
Tính Bảo Mật JWTs
token.
JWTs cung cấp cơ chế chữ ký số cho phép
máy chủ xác minh tính hợp lệ của token,
giúp ngăn chặn các cuộc tấn công giả mạo.
JWTs thường được sử dụng trong môi
trường Internet công cộng, vì vậy việc sử

8
dụng HTTPS là rất quan trọng để đảm bảo
an toàn khi truyền token qua mạng.

Tính bảo mật của OAuth Tokens phụ thuộc


vào cách triển khai cụ thể và cách thức quản
lý token.
OAuth Tokens thường được sử dụng để ủy
quyền truy cập vào tài nguyên, vì vậy việc
kiểm soát phạm vi ủy quyền và xác thực
OAuth
người dùng là quan trọng để đảm bảo an
toàn.
Một trong những biện pháp bảo mật phổ
biến cho OAuth Tokens là sử dụng mã thông
báo (bearer token) kết hợp với HTTPS để
ngăn chặn cuộc tấn công giả mạo.

OpenID Connect Tokens cung cấp một lớp


bổ sung của việc xác thực người dùng và
quản lý phiên.
Tính bảo mật của OpenID Connect Tokens
phụ thuộc vào việc triển khai cụ thể và việc
OpenID Connect quản lý thông tin xác thực người dùng.
OpenID Connect Tokens thường được sử
dụng để xác thực người dùng trong các ứng
dụng đa nền tảng, vì vậy việc áp dụng các
biện pháp bảo mật như mã hóa và chữ ký số
là quan trọng.

SAML Tokens thường được sử dụng trong


môi trường doanh nghiệp và được quản lý
thông qua các cơ sở hạ tầng bảo mật như
LDAP và Active Directory.
Tính bảo mật của SAML Tokens được đảm
bảo bởi việc sử dụng các biện pháp mã hóa
SAML
và chữ ký số để bảo vệ thông tin xác thực và
phiên.
SAML Tokens thường được trao đổi giữa
các hệ thống tin cậy, giúp giảm thiểu rủi ro
bảo mật liên quan đến truyền thông tin xác
thực qua mạng công cộng.

JWTs có tính đa nền tảng cao và được hỗ trợ


trên nhiều nền tảng khác nhau bao gồm web,
Tính đa nền
JWTs di động và các ứng dụng máy tính. Các thư
tảng
viện và framework cho JWTs được phát
triển và hỗ trợ rộng rãi trên các nền tảng như

9
Java, Node.js, Python, .NET, PHP và nhiều
ngôn ngữ lập trình khác.

OAuth Tokens cũng có tính đa nền tảng cao


và được hỗ trợ trên nhiều nền tảng khác
nhau. Các dịch vụ lớn như Google,
OAuth Facebook và Twitter đều hỗ trợ OAuth để
cung cấp dịch vụ ủy quyền truy cập trên
nhiều nền tảng, bao gồm web, di động và
ứng dụng máy tính.

OpenID Connect Tokens được thiết kế để


làm việc trên nhiều nền tảng khác nhau.
OpenID Connect là một tiêu chuẩn xác thực
phổ biến được sử dụng trong các ứng dụng
OpenID Connect
đa nền tảng và các dịch vụ đám mây. Các
thư viện và framework cho OpenID Connect
cũng được phát triển và hỗ trợ trên nhiều
nền tảng.

SAML Tokens thường được sử dụng chủ


yếu trong môi trường doanh nghiệp và hệ
thống nội bộ. Mặc dù SAML có thể được
triển khai trên nhiều nền tảng, nhưng nó có
thể ít phổ biến trên các nền tảng di động so
SAML
với JWTs, OAuth và OpenID Connect. Tuy
nhiên, các dịch vụ lớn như Microsoft Active
Directory và các giải pháp SSO (Single
Sign-On) như Okta vẫn hỗ trợ SAML cho
các ứng dụng đa nền tảng.

3. Hướng phát triển


Dụa vào các những giới hạn và rủi ro thì có thể thấy JWTs có thể vẫn bị tấn công và khả
năng thông tin bị lấy cắp vẫn cao. Vì thế nhóm có đề xuất hướng pháp triển trong việc sử
dụng JWT để đảm bảo an toàn thông tin trong thương mại điện tử
3.1. Defense in depth
JWT (JSON Web Tokens) có thể được tích hợp vào một chiến lược bảo mật đa tầng để
tăng cường tính an toàn của hệ thống. Bảo mật đa tầng, hay còn gọi là "defense in depth",
là một chiến lược bảo mật phổ biến trong ngành công nghiệp, nơi sử dụng nhiều lớp bảo
vệ để bảo vệ hệ thống khỏi các cuộc tấn công từ nhiều phía khác nhau. Bằng cách kết hợp
JWT vào trong một chiến lược bảo mật đa tầng, ta có thể tạo ra một hệ thống bảo mật
toàn diện và mạnh mẽ.

10
- Lớp Bảo Mật Tầng 1 - Transport Layer Security (TLS/SSL): Hệ thống sử dụng
HTTPS để bảo vệ thông tin khi truyền qua mạng. Tất cả các kết nối giữa máy
khách và máy chủ đều được mã hóa để ngăn chặn việc đánh cắp hoặc sửa đổi dữ
liệu trong quá trình truyền tải.

- Lớp Bảo Mật Tầng 2 - Xác Thực và Ủy Quyền (Authentication & Authorization):
Khi người dùng yêu cầu truy cập vào hệ thống, họ cung cấp thông tin xác thực, ví
dụ như tên người dùng và mật khẩu. Máy chủ sẽ xác thực thông tin này và tạo
JWT chứa các thông tin về người dùng và quyền hạn của họ. JWT sẽ được gửi lại
cho người dùng, và từ đó được sử dụng để xác thực và ủy quyền trong các yêu cầu
sau này.

- Lớp Bảo Mật Tầng 3 - Kiểm Tra Chữ Ký Số (Signature Verification): Trước khi
tin tưởng vào nội dung của JWT, máy chủ sẽ kiểm tra chữ ký số của nó để đảm
bảo tính toàn vẹn và xác thực của token. Chữ ký số được tạo bằng cách sử dụng
khóa bí mật duy nhất mà chỉ máy chủ biết, do đó chỉ có máy chủ mới có thể xác
minh tính hợp lệ của JWT.

- Lớp Bảo Mật Tầng 4 - Quản Lý Thời Gian Sống của Token (Token Expiry
Management): Mỗi JWT được cấu hình với một thời gian sống hợp lý. Khi JWT
hết hạn, người dùng sẽ cần phải tái xác thực để nhận được một token mới. Việc
này giúp đảm bảo rằng các token không tồn tại quá lâu và gây ra nguy cơ bảo mật,
đồng thời cũng cần bổ sung bảo mật bằng cách yêu cầu xác thực lại định kỳ.

3.2. Kết hợp với CSRF token


Để đối phó với mối đe dọa của tấn công Cross-Site Request Forgery (CSRF) trong ứng
dụng web, việc sử dụng JWT kết hợp với CSRF token là một biện pháp hiệu quả để bảo
vệ hệ thống khỏi các cuộc tấn công này. CSRF là một kỹ thuật tấn công mà kẻ tấn công
tạo ra các yêu cầu giả mạo từ một trang web hoặc ứng dụng khác mà người dùng đã đăng
nhập, nhằm mục đích thực hiện các hành động không mong muốn từ phía người dùng, ví
dụ như thực hiện giao dịch tài chính hoặc thay đổi thông tin cá nhân.

Một phương pháp hiệu quả để ngăn chặn CSRF là sử dụng CSRF token. CSRF token là
một token duy nhất được tạo ra cho mỗi phiên làm việc của người dùng và được đính
kèm vào các yêu cầu từ phía máy khách. Khi máy chủ nhận được yêu cầu, nó sẽ kiểm tra
CSRF token để xác nhận rằng yêu cầu đến từ một nguồn tin cậy và không phải là một yêu
cầu giả mạo.

Kết hợp JWT với CSRF token là một cách mạnh mẽ để bảo vệ ứng dụng web khỏi CSRF.
JWT được sử dụng để xác thực và ủy quyền người dùng, trong khi CSRF token được sử

11
dụng để xác thực tính hợp lệ của yêu cầu từ phía máy khách. Khi người dùng đăng nhập
và nhận được JWT, CSRF token cũng được tạo ra và gửi kèm theo JWT. Mỗi khi người
dùng thực hiện một yêu cầu, CSRF token sẽ được đính kèm vào yêu cầu đó. Khi máy chủ
nhận được yêu cầu, nó sẽ kiểm tra cả JWT và CSRF token để đảm bảo tính toàn vẹn và
xác thực của yêu cầu.

Việc kết hợp JWT với CSRF token cung cấp một cơ chế bảo mật toàn diện và hiệu quả để
ngăn chặn các cuộc tấn công CSRF trong ứng dụng web. Điều này giúp bảo vệ thông tin
cá nhân của người dùng và đảm bảo tính toàn vẹn của hệ thống trước các mối đe dọa từ
các cuộc tấn công mạng.

12

You might also like