

































































Preview text:
  lOMoARcPSD| 36477832   MỤC LỤC  LỜI CẢM ƠN  i  LỜI CAM ĐOAN  ii  MỤC LỤC  iii 
DANH MỤC TỪ VIẾT TẮT  vi  DANH MỤC HÌNH ẢNH  i  MỞ ĐẦU  1 
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT  2  1.1. Cơ sở lý thuyết  2 
1.1.1. Khái niệm và phân loại  2 
1.1.2. Ưu điểm của hệ thống quản lý lưu trữ tài liệu 
1.1.3. Nhược điểm của hệ thống quản lý lưu trữ tài liệu 
1.2. Một số ứng dụng quản lý lưu trữ tài liệu điển hình 
1.2.1. Một số ứng dụng lưu trữ quản lý tài liệu Offline 
1.2.2. Một số ứng dụng lưu trữ quản lý tài liệu Online 
1.3. An toàn thông tin trong ứng dụng lưu trữ quản lý tài liệu 
1.3.1. Các rủi ro tiềm ẩn 
1.3.2. Bảo mật thông tin của các phần mềm trực tuyến hiện nay 
CHƯƠNG 2. GIẢI PHÁP ĐẢM BẢO TÍNH AN TOÀN TRONG ỨNG 
DỤNG QUẢN LÝ LƯU TRỮ TÀI LIỆU 6 
2.1. An toàn trong lưu trữ và vấn đề đảm bảo tính riêng tư dữ liệu  6 
2.1.1. Những vấn đề cơ bản trong an toàn lưu trữ tài liệu 
2.1.2. Vấn đề riêng tư của dữ liệu 
2.2. Giao thức đảm bảo tính riêng tư dữ liệu trong lưu trữ quản lý dữ liệu  9  2.2.1. Giao thức SSL  2.2.2 Giao thức TLS  2.2.3. Giao thức TLS Record  2.2.4. Giao thức Handshake 
2.3. Giải pháp đảm bảo an toàn trong lưu trữ quản lý dữ liệu  14  i      lOMoARcPSD| 36477832
2.3.1. Sử dụng SFTP Server để lưu trữ tài liệu cục bộ 
2.3.2. Sử dụng JWT để bảo mật trang web 
2.3.3. Xác thực hai lớp Two-Factor Authentication (2FA) 
2.4. Môi trường phát triển dự án an toàn  23 
2.4.1. Môi trường phát triển source code 
2.4.2. Môi trường phát triển cơ sở dữ liệu 
CHƯƠNG 3. PHÂN TÍCH, THIẾT KẾ HỆ THỐNG  25 
3.1 Bài toán đặt ra và phương hướng giải quyết  25 
3.1.1. Mục đích thực tế của đề tài 
3.1.2. Mô tả công tác quản lý lưu trữ tài liệu tại Học viện Kỹ thuật Mật mã 25 
3.2. Phân tích thiết kế chức năng  26 
3.2.1. Biểu đồ ngữ cảnh của hệ thống  26 
3.2.2. Sơ đồ phân rã chức năng  26 
3.2.3. Mô hình liên kết thực thể  28  3.2.4. Mô hình Usecase  29 
3.2.5. Mô hình triển khai cơ sở hạ tầng  30 
3.3. Phân tích thiết kế luồng chức năng  31 
3.3.1. Thiết kế luồng chức năng đăng nhập  31 
3.3.2. Thiết kế luồng quản lý nhân viên  32 
3.3.3. Thiết kế luồng duyệt tài liệu  32 
3.4. Mô hình cơ sở dữ liệu.  33 
CHƯƠNG 4. XÂY DỰNG ỨNG DỤNG  35 
4.1. Chức năng chính của hệ thống  35 
4.1.1. Chức năng Đăng nhập 
4.1.2. Chức năng Quản lý và duyệt tài liệu 
4.1.3. Chức năng quản lý người dùng 
4.1.4. Chức năng quản lý chức vụ 
4.1.5. Chức năng quản lý phòng ban 
4.1.6. Chức năng quản lý loại tài liệu  ii      lOMoARcPSD| 36477832
4.1.7. Chức năng cấu hình hệ thống  KẾT LUẬN  48  TÀI LIỆU THAM KHẢO  50  PHỤ LỤC 1  52  PHỤ LỤC 2  54 
DANH MỤC TỪ VIẾT TẮT  Viết Tắt  Tiếng Anh  Tiếng Việt  API  Application 
 Programming Giao diện lập trình ứng dụng  Interface    World Wide Web Consortium 
Tổ chức tiêu chuẩn quốc tế cho  www  JSON  JavaScript Object Notation 
Kiểu định dạng dữ liệu tuân 
theo một quy luật nhất định  IDE  Integrated   
Development Môi trường tích hợp dùng để 
viết code để phát triển ứng  Environment  dụng  JWT  JSON Web Token  Mã thông báo web JSON  MVC  Model-View-Controller 
Một mẫu kiến trúc phần mềm 
để tạo lập giao diện người  RSA  Rivest, Shamir và Adleman 
Thuật toán Hệ mật mã khóa  công khai  HMAC  Hashed   
Message Mã xác thực tin nhắn dựa trên  băm  Authentication Code  URI  Uniform Resource Identifier 
Mã định danh tài nguyên thống  nhất  iii      lOMoARcPSD| 36477832 DANH MỤC HÌNH  ẢNH  Hình 2.1 Quá trính SSL  Hanshake  13 
Hình 2.2 Quá trính truyền file  trong SFTP Server  15 
Hình 2.3 Mô hình hoạt động  của JWT  16 
Hình 2.4 Ví dụ về header của  JWT  17  Hình 2.5 Mẫu payload của  JWT  18 
Hình 2.5 Mẫu chữ ký của  JWT  18 
Hình 2.6 Mẫu một mã JWT 18 
Hình 2.7 Định dạng tiêu đề của  api  19 
Hình 2.8 Cách thức mà JWT  xác thực  19 
Hình 2.9 Quá trình tạo mã  OTP và đăng nhập bằng  OTP  21 
Hình 2.10 Các function xử lý  OTP bằng otplib  22 
Hình 2.11 Xử lý OTP token và 
tạo ảnh gửi về cho client  23 
Hình 2.12 Xử lý token client 
gửi lên cho server xác thực 23 
Hình 3.1 Biểu đồ ngữ cảnh của  hệ thống  27 
Hình 3.2 Sơ đồ phân rã chức  năng  27 
Hình 3.3 Mô hình usecase cho  hệ thống  30      lOMoARcPSD| 36477832
Hình 3.4 Mô hình triển khai cơ  sở hạ tầng  32 
Hình 3.5 Sơ đồ chức năng  đăng nhập  32 
Hình 3.6 Sơ đồ chức năng  quản lý nhân viên  33 
Hình 3.7 Sơ đồ luồng duyệt tài  liệu  33 
Hình 3.8 Mô hình cơ sở dữ  liệu  34  Hình 4.1 Màn hình đăng  nhập  35 
Hình 4.2 Dữ liệu trả về khi  đăng nhập thành công  36 
Hình 4.3 Đoạn code xử lý  đăng nhập  36 
Hình 4.4 Đoạn code xử lý  đăng nhập  37  Hình 4.5 Trang chủ  37 
Hình 4.6 Thông tin user được  lưu ở LocalStorage  38  8 
Hình 4.7 Thông tin token được  lưu ở Cookies  38 
Hình 4.8 Left menu của tài  khoản Admin và User  39 
Hình 4.9 Trang tạo mới tài  liệu  40 
Hình 4.10 Trang danh sách tài  liệu được tạo mới  40 
Hình 4.11 Trang danh sách tài  liệu chờ duyệt   41 
Hình 4.12 Trang danh sách tài  liệu cần duyệt  41      lOMoARcPSD| 36477832
Hình 4.13 Trang danh sách tài  liệu đã ban hành  41  Hình 4.14 Modal yêu cầu  duyệt thêm  42 
Hình 4.15 Mục xem lý do từ  chối duyệt  42 
Hình 4.16 Danh sách tài liệu bị  từ chối duyệt  43  Hình 4.17 Trang tạo mới  user  43 
Hình 4.18 Danh sách users 44 
Hình 4.19 Màn hình tạo mới  chức vụ  44 
Hình 4.20 Màn hình danh sách  chức vụ  45 
Hình 4.21 Màn hình tạo mới  phòng ban  45 
Hình 4.22 Màn hình danh sách  phòng ban  46 
Hình 4.23 Màn hình tạo mới  loại tài liệu  46 
Hình 4.24 Màn hình danh sách  loại tài liệu  47 
Hình 4.25 Màn hình cấu hình  server  47 
Hình 4.26 Các file lưu trữ cấu  hình hệ thống  48 
Hình 4.27 Đoạn code xử lý get 
và set cấu hình hệ thống  48 
Hình 4.28 Cách thức hoạt  động của OAuth 2.0.  61  Hình 4.29 Chọn Drive API  trong cấu hình Google  Develops  61      lOMoARcPSD| 36477832 Hình 4.30 Cấu hình OAuth  2.0  62  Hình 4.31 Tạo một API  Service trong Cloud  Console  63 
Hình 4.32 Lấy giá trị Client ID  và Client Secret  63 
Hình 4.33 Lấy được token khi 
tạo một request trong OAuth  2.0  64 
Hình 4.34 Cách thức hoạt  động của SFTP  65  9      lOMoARcPSD| 36477832 MỞ ĐẦU 
Với sự phát triển rất nhanh chóng của mạng Internet, các ứng dụng trực 
tuyến đã trở thành một công cụ đắc lực trong việc giải quyết nhanh chóng nhiều 
vấn đề trong các công việc hằng ngày của các cơ quan, doanh nghiệp. Nhiều cơ 
quan, doanh nghiệp trong quá trình kinh doanh và sản xuất cần nhiều thực hiện 
nhiều thủ tục pháp lý giúp cho việc quản lý dễ dàng, minh bạch và an toàn hơn. 
Từ đó sinh ra việc ký kết các hợp đồng, tạo hóa đơn, văn bản quy phạm,…Việc 
lưu trữ và bảo vệ các văn bản tài liệu trên trở thành việc quan trọng và cấp thiết 
cho sự hoạt động trơn tru của các doanh nghiệp. 
Một trong những cách thức lưu trữ tài liệu thường có tại các cơ quan, doanh 
nghiệp là in các tài liệu quan trọng thành các văn bản giấy và lưu trữ chúng trong 
các tủ kệ, két sắt. Việc lưu trữ truyền thống này giúp cho văn bản luôn rõ ràng 
nhưng tồn tại nhiều mặt hạn chế như việc tìm văn bản trong một không gian lớn 
rất khó khăn và mất thời gian nên không đáp ứng được tính sẵn sàng của tài liệu. 
Hoặc như việc lưu các hóa đơn trong sổ sách cũng khó khi hằng ngày doanh 
nghiệp hay cửa hàng in hàng trăm hàng nghìn hóa đơn. Chưa kể đến tài liệu lưu 
trong tủ rất dễ hỏng do thời tiết hoặc các tác nhân như chuột, bọ,… 
Để giải quyết được các yếu điểm của việc lưu trữ tài liệu truyền thống. 
Doanh nghiệp cũng cần lưu trữ các tài liệu dưới dạng văn bản mềm vừa giúp bảo 
toàn các văn bản quan trọng vừa có thể truy vấn tài liệu một chác nhanh chóng và 
thuận tiện. Mục tiêu của việc nghiên cứu thực hiện đồ án tốt nghiệp với đề tài 
“Xây dựng hệ thống quản lý tài liệu nội bộ an toàn” là nhằm phát triển công cụ 
lưu trữ tài liệu an toàn, có tính khả dụng cao, thân thiện người dùng với chi phí 
thấp, đáp ứng nhu cầu lưu trữ trao đổi tài liệu nhanh chóng, an toàn, thuận tiện. 
Sinh viên thực hiện đồ án  Trương Việt Hoàng  1      lOMoARcPSD| 36477832
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT 
1.1. Cơ sở lý thuyết 
 1.1.1. Khái niệm và phân loại 
Hệ thống Quản lý lưu trữ tài liệu là hệ thống được sử dụng để quản lý, lưu 
trữ, bảo toàn và phân phối các tài liệu của tổ chức, hệ thống nhắm đến mục tiêu 
làm việc quản lý thông tin trong doanh nghiệp trở nên dễ dàng hơn thông qua việc 
đơn giản hóa lưu trữ, bảo mật và sử dụng. Hệ thống này giúp cho việc quản lý 
thông tin trong doanh nghiệp trở nên hiệu quả hơn, giúp cho việc tìm kiếm thông 
tin nhanh chóng và chính xác hơn 
Hệ thống Quản lý lưu trữ tài liệu được phân loại thành một số tiêu chí như  sau: 
● Phân loại theo chủ đề hoặc danh mục. 
● Phân loại theo độ ưu tiên hoặc mức độ quan trọng. 
● Phân loại theo người sử dụng hoặc nhóm người sử dụng. 
 1.1.2. Ưu điểm của hệ thống quản lý lưu trữ tài liệu 
● Hệ thống Quản lý lưu trữ tài liệu giúp cho việc quản lý thông tin trong 
doanh nghiệp trở nên hiệu quả hơn, giúp cho việc tìm kiếm thông tin 
nhanh chóng và chính xác hơn. 
● Hệ thống giúp cho việc sử dụng tài liệu trở nên dễ dàng hơn thông qua 
việc đơn giản hóa lưu trữ, bảo mật và sử dụng. 
● Hệ thống quản lý lưu trữ tài liệu giúp doanh nghiệp tiếp nhận và xử lý 
thông tin một cách nhanh chóng, chính xác nhất. Đảm bảo được nội  2      lOMoARcPSD| 36477832
dung văn bản được truyền tải đến các cán bộ nhân viên một cách nhanh  chóng nhất 
● Hệ thống quản lý lưu trữ tài liệu giúp doanh nghiệp thiết lập các khâu 
xử lý tài liệu nhanh chóng và đúng thời gian. 
● Với những tính năng bảo mật vượt trội, ổn định và hoàn toàn lưu trữ 
được toàn bộ tài liệu. 
● Hệ thống quản lý lưu trữ tài liệu giúp doanh nghiệp tiết kiệm được ngân 
sách, đảm bảo sự ổn định và phát triển thương hiệu công ty. Phát triển 
và tăng cường các mối quan hệ của khách hàng và đối tác. 
● Giúp doanh nghiệp phản hồi thông tin tới đối tác, khách hàng chính xác  và nhanh chóng. 
 1.1.3. Nhược điểm của hệ thống quản lý lưu trữ tài liệu 
● Do hạn chế về vấn đề lưu trữ tùy chọn trên cloud nên khó khăn trong 
việc quản lý các tài liệu có kích thước lớn hoặc số lượng tài liệu quá  nhiều. 
● Không thể đảm bảo tính bảo mật cao cho các tài liệu quan trọng khi lưu 
trữ tùy chọn trên cloud. 
● Các tài liệu có thể bị mất hoặc bị hỏng do sự cố kỹ thuật hoặc do người  dùng không cẩn thận.  3      lOMoARcPSD| 36477832
● Khó khăn trong việc tìm kiếm và truy xuất thông tin nếu hệ thống không 
được tổ chức và phân loại đúng cách. 
● Do là những thiết bị hiện đại, với nhiều tính năng nổi bật nên khi gặp sự 
cố về thiết bị cần phải có kỹ thuật viên trình độ cao. 
1.2. Một số ứng dụng quản lý lưu trữ tài liệu điển hình 
 1.2.1. Một số ứng dụng lưu trữ quản lý tài liệu Offline 
● CloudOffice: phần mềm này cho phép người dùng lưu trữ tài liệu trên 
máy tính cá nhân và có khả năng truy cập từ xa. 
● Phần mềm quản lý tài liệu ISO Vtranet: phần mềm này có khả năng 
quản lý tài liệu theo chuẩn ISO và hỗ trợ nhiều ngôn ngữ. 
● Phần mềm quản lý tài liệu thông minh DocEye: phần mềm này có khả 
năng tự động phân loại và gán nhãn cho các tài liệu. 
● Phần mềm quản lý tài liệu VcSoft DMS: phần mềm này có khả năng 
quản lý tài liệu theo chuẩn ISO và hỗ trợ nhiều ngôn ngữ. 
 1.2.2. Một số ứng dụng lưu trữ quản lý tài liệu Online 
● Base Drive: phần mềm này cho phép người dùng lưu trữ và công tác tài 
liệu hiệu quả, có giao diện trực quan, linh động và tìm kiếm file nhanh  chóng. 
● Workplus: phần mềm này mang tới phần mềm quản lý dữ liệu với nhiều 
tính năng như toàn bộ tài liệu của doanh nghiệp được số hóa an toàn 
trên đám mây, lưu trữ một cách khoa học và dễ tìm kiếm. 
● Google Drive: một dịch vụ lưu trữ đám mây được cung cấp bởi 
Google, cho phép người dùng lưu trữ và chia sẻ tài liệu trực tuyến.  4      lOMoARcPSD| 36477832
● OneDrive: một dịch vụ lưu trữ đám mây được cung cấp bởi Microsoft, 
cho phép người dùng lưu trữ và chia sẻ tài liệu trực tuyến. 
1.3. An toàn thông tin trong ứng dụng lưu trữ quản lý tài liệu 
 1.3.1. Các rủi ro tiềm ẩn 
Các rủi ro tiềm ẩn khi sử dụng các phần mềm lưu trữ tài liệu trực tuyến bao  gồm: 
● Rủi ro về bảo mật: các tài liệu được lưu trữ trên đám mây có thể bị đánh 
cắp hoặc bị xâm nhập bởi các hacker. 
● Rủi ro về quyền riêng tư: các tài liệu được lưu trữ trên đám mây có thể 
bị chia sẻ hoặc tiết lộ cho những người không được ủy quyền. 
● Rủi ro về sự cố kỹ thuật: các dịch vụ lưu trữ đám mây có thể gặp sự cố 
kỹ thuật, dẫn đến việc mất dữ liệu hoặc khó khăn trong việc truy cập dữ  liệu. 
 1.3.2. Bảo mật thông tin của các phần mềm trực tuyến hiện nay 
Nhiều doanh nghiệp hiện nay đang chuyển dần sang hình thức lưu trữ và 
quản lý tài liệu trực tuyến với các công cụ như Google Drive, OneDrive và 
Amazon. Mặc dù các ứng dụng này mang lại nhiều lợi ích, tiện lợi, dễ sử dụng và 
đặc biệt là cho phép lưu trữ trực tiếp sang kỹ thuật số. Tuy nhiên, chúng cũng tạo 
ra nhiều thách thức cho người dùng về vấn đề an toàn dữ liệu khi sử dụng. 
Không một ứng dụng nào có khả năng an toàn một cách tuyệt đối. Ngay cả 
những ứng dụng lưu trữ trực tuyến phổ biến nhất được xây dựng bởi các tổ chức 
có phương pháp phát triển phần mềm chuyên nghiệp và an toàn, nhưng vẫn có thể 
xảy ra lỗi như thường.  5      lOMoARcPSD| 36477832
CHƯƠNG 2. GIẢI PHÁP ĐẢM BẢO TÍNH AN TOÀN 
TRONG ỨNG DỤNG QUẢN LÝ LƯU TRỮ TÀI LIỆU 
2.1. An toàn trong lưu trữ và vấn đề đảm bảo tính riêng tư dữ liệu 2.1.1. 
Những vấn đề cơ bản trong an toàn lưu trữ tài liệu 
An toàn lưu trữ tài liệu là việc đảm bảo tài liệu được bảo vệ an toàn và 
không bị mất mát. Tài liệu lưu trữ là tài sản quý giá, có giá trị đặc biệt đối với sự 
phát triển của doanh nghiệp, phải được bảo quản an toàn tuyệt đối theo đúng 
những yêu cầu, quy định. 
Đối với an toàn lưu trữ, có bảy vấn đề cơ bản ta cần nắm bắt và hiểu biết 
về chúng, bao gồm: sự xác thực, quyền cấp phép, kiểm tra (giám sát), tính bí mật, 
tính toàn vẹn, tính sẵn sàng, tính chống chối bỏ. 
* Sự xác thực (Authentication) 
Sự xác thực liên quan đến khả năng nhận biết các nhân viên của doanh 
nghiệp tham gia về việc quản lý và lưu trữ tài liệu, mỗi thành viên tham gia quản 
lý và lưu trữ được xác định trong một tổ chức và doanh nghiệp. 
Quá trình mà thông qua đó một thực thể này kiểm tra rằng một thực thể 
khác chính là đối tượng mà mình yêu cầu được gọi là sự xác thực. Xác thực yêu 
cầu bằng chứng ở các dạng khác nhau, đó cỏ thể là mật khẩu, thẻ tín dụng hoặc  chữ ký điện tử… 
* Quyền cấp phép (Authorization) 
Một khi đã được xác thực, liệu một cá nhân hoặc một chương trình có quyền 
truy cập tới một dữ liệu cụ thể, các chương trình hoặc các nguồn lực hệ thống nào 
đó (files dữ liệu, các bản ghi, thư mục…) hay không? Quyền cấp phép đảm bảo 
rằng một cá nhân hoặc một chương trình có quyền truy cập tới các nguồn lực, tài 
nguyên nhất định. Quyền cấp phép thường được xác định bởi thông tin so sánh về 
cá nhân hay chương trình với các thông tin kiểm soát truy cập liên kết với các 
nguồn lực được truy cập.  6      lOMoARcPSD| 36477832
* Kiểm tra (giám sát) (Auditing) 
Khi một người hoặc một chương trình truy cập vào một Website, sẽ có các 
mảnh thông tin khác nhau được sẽ được ghi lại trên các file nhật ký. Khi một 
người hoặc một chương trình yêu cầu cơ sở dữ liệu, hành động đó cũng được ghi 
lại trên các file nhật ký. Quá trình thu thập thông tin về sự truy cập vào một nguồn 
lực cụ thể, bằng cách sử dụng các quyền ưu tiên hoặc thực hiện các hoạt động an 
ninh khác, được gọi là kiểm tra. Việc kiểm tra sẽ cung cấp bằng chứng, dữ liệu về 
hoạt động đã xảy ra trên hệ thống, tạo ra sự thuận lợi sau này nếu có công việc 
cần tới thông tin về thiết bị hay người dùng. 
* Tính bí mật (confidentiality) 
Tính bí mật liên quan đến khả năng đảm bảo rằng đối với các thông riêng 
tư, thông tin nhạy cảm, ngoài những người có quyền truy cập, không có ai, không 
có các quá trình, phần mềm máy tính nào có thể truy cập vào. Tính bí mật liên 
quan chặt chẽ với tính riêng tư (bảo vệ bí mật riêng tư). Các thông tin riêng tư 
thường là các bí mật về tài liệu, các văn bản công văn nội bộ, các bản ghi về luồng 
truy cập và ngay cả việc một các nhân nào đó vừa truy cập vào phần mềm. 
Tính riêng tư liên quan đến khả năng kiểm soát việc sử dụng các thông tin cá nhân 
mà khách hàng cung cấp về chính bản thân họ. 
Tính bí mật đòi hỏi cá nhân hoặc doanh nghiệp phải biết các dữ liệu và ứng 
dụng nào họ cần bảo vệ và ai được quyền truy cập tới đó. Tính bí mật thường 
được đảm bảo bằng công nghệ mã hóa. 
* Tính toàn vẹn (Integrity) 
Tính toàn vẹn đề cập đến khả năng đảm bảo an toàn cho các thông tin được 
hiển thị trên một website hoặc chuyển hay nhận các thông tin trên Internet. Các 
thông tin này không bị thay đổi nội dung hoặc bị phá hủy bằng bất cứ cách thức 
không được phép nào. Ví dụ, nếu một kẻ cố tình xâm nhập trái phép, chặn và thay 
đổi nội dung các thông tin truyền trên mạng, như thay đổi yêu cầu duyệt văn bản 
và tự động duyệt văn bản khi chưa được phép. Trong những trường hợp như vậy,  7      lOMoARcPSD| 36477832
tính toàn vẹn của thông điệp đã bị xâm hại bởi việc truyền thông diễn ra không 
đúng với những gì người gửi mong muốn. 
Trong lưu trữ tài liệu, để đảm bảo tính toàn vẹn thông tin, trước tiên, các 
quản trị viên hệ thống phải xác định chính xác danh sách những người được phép 
thay đổi dữ liệu trên phần mềm. Càng có nhiều người được phép làm điều này 
cũng nghĩa là càng có nhiều mối đe dọa đối với tính toàn vẹn thông tin từ cả bên 
trong và bên ngoài tổ chức. 
Mã hóa là một trong cách thức quan trọng để đảm bảo tính nguyên vẹn của  thông tin. 
* Tính sẵn sàng (Availability) 
Một website trực tuyến được gọi là sẵn sàng khi một cá nhân hoặc một 
chương trình có thể truy cập được vào các trang Web, các dữ liệu hoặc dịch vụ do 
Website cung cấp khi cần thiết. Tính sẵn sàng liên quan đến khả năng đảm bảo 
các chức năng của một phần mềm lưu trữ tài liệu được thực hiện đúng như mong 
đợi. Đây cũng là vấn đề mà các website hay gặp phải và là trở ngại không nhỏ đối 
với việc thực hiện các yêu cầu lưu trữ. 
Các công nghệ như phần cứng và phần mềm cân bằng tải được sử dụng để 
phục vụ việc đảm bảo tính sẵn sàng của Website. 
* Chống chối bỏ (Nonrepudation) 
Chống chối bỏ liên quan đến khả năng đảm bảo rằng các bên tham gia quản 
lý không thể phủ định các hành động trực tuyến mà họ đã thực hiện. Ví dụ, một 
nhân viên được quyền từ chối duyệt văn bản thao tác từ chối duyệt mà không thể 
chối bỏ được hành vi trên. Trong trường hợp như vậy phải có các bản ghi lưu lại 
thông tin thời gian, đối tượng và hành vi của cá nhân đó. Và tất nhiên, rủi ro sẽ 
thuộc về người yêu cầu duyệt văn bản đó. Một trong các công cụ then chốt để 
chống phủ định là chữ ký điện tử. 
 2.1.2. Vấn đề riêng tư của dữ liệu 
Luồng thông tin dữ liệu được truyền từ nguồn (nơi bắt đầu gửi) đến đích 
(nơi được nhận dữ liệu). Trên đường truyền công khai, dữ liệu bị tấn công bởi  8      lOMoARcPSD| 36477832
những kẻ tấn công với mục đích xấu (hoặc những người mà không được uỷ quyền 
nhận dữ liệu). Dữ liệu truyền trên mạng có thể bị tấn công theo các cách như sau: 
a) Tấn công ngăn chặn thông tin 
Tấn công ngăn chặn thông tin (interruption) là tấn công làm cho tài nguyên 
thông tin bị phá huỷ, không sẵn sàng phục vụ hoặc không sử dụng được. Đây là 
hình thức tấn công làm mất khả năng sẵn sàng phục vụ của thông tin. 
Ví dụ: phá huỷ đĩa cứng, cắt đứt đường truyền tin, vô hiệu hoá hệ thống  quản lý tệp… 
b) Tấn công chặn bắt thông tin 
Tấn công chặn bắt thông tin (interception) là tấn công mà kẻ tấn công có 
thể truy cập tới tài nguyên thông tin. Đây là hình thức tấn công vào tính bí mật 
của thông tin. Trong một số tình huống kẻ tấn công được thay thế bởi một chương 
trình hoặc một máy tính. 
Ví dụ: Việc chặn bắt thông tin có thể là nghe trộm để thu tin trên mạng 
(trộm mật khẩu) và sao chép bất hợp pháp các tệp tin hoặc các chương trình,  keylogger… 
c) Tấn công sửa đổi thông tin 
Tấn công sửa đổi thông tin (modification) là tấn công mà kẻ tấn công truy 
nhập, chỉnh sửa thông tin trên mạng. Đây là hình thức tấn công vào tính toàn vẹn 
của thông tin. Nó có thể thay đổi giá trị trong tệp dữ liệu, sửa đổi chương trình và 
sửa đổi nội dung các thông điệp truyền trên mạng. 
Ví dụ: Kẻ tấn công sử dụng các đoạn mã nguy hiểm, virus, worm.. 
d) Chèn thông tin giả mạo 
Kẻ tấn công chèn các thông tin và dữ liệu giả vào hệ thống. Đây là hình 
thức tấn công vào tính xác thực của thông tin. Nó có thể là việc chèn các thông 
báo giả mạo vào mang hay thêm các bản ghi vào tệp khiến hệ thống hiểu nhầm và 
xảy ra lỗi. Ví dụ: Tấn công giả mạo địa chỉ IP, giả mạo ARP…  9      lOMoARcPSD| 36477832
2.2. Bộ giao thức đảm bảo tính riêng tư dữ liệu trong lưu trữ quản lý dữ  liệu 
 2.2.1. Giao thức SSL 
Trong lưu trữ tài liệu, các giao dịch được thực hiện chủ yếu thông qua mạng 
Internet, một mạng truyền thông mở, vì vậy, dữ liệu dễ bị kẻ xấu lấy trộm và sử 
dụng vào những mục đích bất chính. Giải pháp cơ bản giải quyết vấn đề này là sử 
dụng giao thức SSL (Secure Socket Layer). Đây là giao thức mã hóa web mục 
đích chung cho kênh giao tiếp hai chiều bảo mật trên mạng Internet. Cho đến nay 
đã có 3 phiên bản của SSL: SSL 1.0, SSL 2.0, SSL 3.0 Giao thức SSL cung cấp 
bảo mật sử dụng như sau: 
• Tính riêng tư (privacy): toàn bộ dữ liệu truyền qua kết nối đều được  mã hoá. 
• Xác thực định danh (Identity Authentication): việc xác thực định 
danh được thực hiện nhờ sử dụng chứng thư số. 
• Tính tin tưởng (Reliability): duy trì tin cậy của kết nối bằng việc kiểm 
tra tính toàn vẹn của thông điệp. 
Kết nối SSL thường được khởi tạo cùng với trình duyệt web sử dụng một 
URL đặc biệt, ví dụ HTTPS được sử dụng để chỉ ra một kết nối HTTP mã hóa 
SSL. HTTPS thường được sử dụng để bảo vệ các truy vấn có tính bảo mật cao. 
Chứng chỉ SSL của HTTPS còn có những ích lợi lớn đối với website lưu  trữ tài liệu:   
Hiện khóa xanh bảo mật, giúp tăng sự tin tưởng của người  dùng.   
Không bị trình duyệt (Chrome, Firefox, Safari) chặn vì thiếu  bảo mật.    Thông tin được mã hóa.   
Khách truy cập có thể xác minh bạn là một doanh nghiệp đã 
đăng ký và bạn sở hữu tên miền. 
Giao thức SSL bao gồm bốn tầng giao thức:  10      lOMoARcPSD| 36477832
Record Layer: quy định định dạng của các thông điệp sử dụng bởi các giao 
thức khác như: Alert, ChangeCipherSpec, và Handshake. Định dạng quy định 
header cho mỗi thông điệp và giá trị băm được sinh bởi MAC. Header có độ dài 
5 byte, bao gồm: Protocol Definition (1 byte), Protocol Version (2 byte) và Length  (2 byte). 
ChangeCipherSpec Protocol: được tạo ra bởi một tin nhắn thông báo rằng 
bắt đầu truyền thông an toàn giữa máy chủ và máy khách. Mặc dù Change Cipher 
Spec Protocol sử dụng định dạng quy đinh bởi Record Layer nhưng thực tế, thông 
điệp chỉ có độ dài là 1 byte, tín hiệu thay đổi trong giao thức có giá trị ‘1’. 
Alert Protocol: giao thức thông báo lỗi, vấn đề hoặc những cảnh báo về 
kết nối giữa các thành viên. Tầng này có cấu trúc bao gồm hai trường: Severity 
Level và Alert Description.  
 + Severity Level: có vai trò gửi thông điệp cùng với giá trị ‘1’ hoặc 
‘2’, phụ thuộc vào bản thân thông điệp. Severity Level có giá trị ‘1’ tương ứng 
với thông điệp cảnh báo; có giá trị ‘2’ là khi là những cảnh báo quan trọng, yêu 
cầu các bên tham gia chấm dứt phiên kết nối. 
 + Alert Description: chỉ ra các lỗi cụ thể, trường này chỉ có độ dài 1 byte, 
có miền giá trị từ 1 đến 12 tương ứng với 12 lỗi nghiêm trọng. 
Handshake Protocol : Mọi phiên làm việc của giao thức SSL đều bắt đầu 
bằng thủ tục “Handshake”, thủ tục có vai trò trao đổi thông điệp giữa các thành 
viên tham gia sử dụng mã hoá công khai với mục đích tạo ra một kênh giao tiếp 
an toàn, quá trình được mô tả tại Hình 2.2. 
Bước 1 (ClientHello): Máy khách gửi tới máy phục vụ một yêu cầu phiên 
giao tiếp an toàn, trong thông điệp bao gồm: phiên bản SSL, cipher setting 
(CipherSuite), dữ liệu phiên làm việc (session-specific data) và một số thông tin 
khác mà server cần để giao tiếp với client sử dụng SSL. 
Bước 2 (ServerHello): Máy phục vụ gửi tới máy khách phiên bản SSL, 
cipher setting, dữ liệu phiên làm việc (session-specific data) và một số thông tin 
khác mà máy khách cần để giao tiếp với máy phục vụ thông quan kênh giao tiếp  11      lOMoARcPSD| 36477832
SSL. Trong bước này, máy phục vụ cũng gửi tới máy khách chứng thư số sở hữu 
của mình (đây chính là SSL một chiều). Nếu máy khách yêu cầu sử dụng tài 
nguyên trên máy phục vụ được cấu hình phải xác thực máy khách thì máy phục 
vụ sẽ yêu cầu máy khách gửi chứng thư số sở hữu bởi máy khách (đây chính là 
SSL hai chiều hoặc là mutual SSL). 
Bước 3: Máy khách sử dụng thông tin được gửi bởi máy phục vụ để xác 
thực máy phục vụ. Trong trường hợp việc xác thực server thất bại, người dùng sẽ 
được cảnh báo và thông báo rằng kết nối mã hoá và xác thực là không thể thực 
hiện, trường hợp ngược lại sẽ chuyển sang bước tiếp theo. 
Bước 4: Sử dụng tất cả dữ liệu được sinh ra trong bước bắt tay trước, máy 
khách tạo ra một pre-master secret cho phiên làm việc này, mã hoá bởi khoá công 
khai của máy phục vụ (được lấy từ chứng thư số mà máy phục vụ gửi cho máy 
khách trong Bước 2) và gửi tới máy phục vụ. 
Bước 5: Nếu server yêu cầu máy khách phải xác thực, máy khách cũng phải 
ký lên một mẫu dữ liệu khác (mẫu này là duy nhất và phải được thống nhất giữa 
máy khách và máy phục vụ) và gửi mẫu dữ liệu này cùng chứng thư số sở hữu bởi 
máy khách kèm với pre-master sercret tới máy phục vụ. 
Bước 6: Khi máy phục vụ đã yêu cầu xác thực máy khách, nếu máy khách 
không thể xác thực, phiên làm việc sẽ kết thúc. Nếu máy khách xác thực thành 
công, máy phục vụ sẽ sử dụng private key của mình để giải mã pre-master secret 
và thực hiện một chuỗi các bước để sinh master secret (tại máy khách cũng thực 
hiện bước sinh master secret từ cùng một pre-master secret mà máy khách đã gửi  cho máy phục vụ). 
Bước 7: Cả máy khách và máy phục vụ đều sử dụng master secret để sinh 
ra khoá phiên (session key – là khoá đối xứng) và sử dụng khoá này để mã hoá và 
giải mã thông tin trao đổi trong suốt phiên làm việc SSL và xác thực tính toàn vẹn  của dữ liệu. 
Bước 8: Máy khách gửi tin nhắn (message) tới máy phục vụ thông báo rằng 
các tin nhắn tiếp theo sẽ được mã hoá sử dụng khoá phiên (session key). Sau đó  12      lOMoARcPSD| 36477832
sẽ gửi một tin nhắn khác (mã hoá sử dụng khoá phiên) để thông báo vai trò của 
máy khách trong thủ tục bắt tay kết thúc. 
Bước 9: Máy phục vụ gửi một tin nhắn tới máy khách thông báo các tin 
nhắn tiếp theo từ máy phục vụ sẽ được mã hoá sử dụng khoá phiên. Sau đó sẽ gửi 
một tin nhắn khác thông báo vai trò của máy phục vụ trong thủ tục bắt tay kết  thúc.   
Hình 2.1 Quá trính SSL Hanshake 
 2.2.2. Giao thức TLS 
Năm 1999, công nghệ TLS được thiết kế để tạo ra chuẩn mã hoá cho giao 
tiếp nội bộ. Mục đích của TLS là ngăn chặn việc nghe trộm, giả mạo tin nhắn. 
TLS được thiết kế để cung cấp tầng an ninh mã hoá hoàn chỉnh, đảm bảo tính bảo 
mật cho thông tin truyền tải giữa các máy chủ. Giao thức TLS được xây dựng dựa 
trên hai giao thức con.  2.2.3. Giao thức TLS Record 
Giao thức Record giải quyết kết nối riêng tư được thành lập giữa máy khách 
và máy chủ. Trong giao thức sử dụng khoá mã hoá đối xứng để đảm bảo kết nối 
riêng. Một kết nối có thể bảo đảm bằng việc sử dụng hàm băm, và trong TLS sử 
dụng thuật toán MAC (Message Authentication Code) là một dạng hàm băm.  13      lOMoARcPSD| 36477832
Thuật toán MAC cũng tương tự như các hàm băm (hash function), thuật toán 
MAC cũng chỉ ra với đầu vào là một khoá bí mật (MAC secret) và một tin nhắn 
có độ dài tuỳ ý cần xác thực, hàm MAC sẽ cho ra một đầu ra. Giá trị MAC có tính 
năng sử dụng bảo toàn dữ liệu cũng như xác thực. Thuật toán MAC phải xử lý 
yêu cầu bảo mật khác các hàm băm ở điểm: Hàm MAC phải chống lại được các 
cuộc tấn công giả mạo sử dụng phương pháp chọn bản rõ (Tức là trong trường 
hợp kẻ tấn công có thể truy cập CSDL chứa khoá bí mật và giá trị MAC sinh ra 
cho các tin nhắn mà kẻ tấn công sử dụng, kẻ tấn công cũng không thể đoán ra giá 
trị MAC cho các tin nhắn khác một cách dễ dàng). Thủ tục MAC khác so với chữ 
ký số ở điểm giá trị MAC được sinh ra và kiểm tra bởi cùng một khoá bí mật, điều 
này có nghĩa rằng người gửi và người nhận phải thoả thuận và thống nhất cùng 
một khoá trước khi giao tiếp và đó chính là một trường hợp của mã hoá đối xứng  (symetric encryption) 
 2.2.4. Giao thức Handshake 
Giao thức Handshake (bắt tay) cho phép máy chủ và máy khách giao tiếp 
hợp lệ với nhau. Giao thức đảm bảo rằng máy chủ và máy khách thoả thuận thuật 
toán mã hoá và khoá trước khi gửi và nhận dữ liệu. Giao thức này tạo ra tính xác 
thực giữa máy chủ và máy khách. 
2.3. Giải pháp đảm bảo an toàn trong lưu trữ quản lý dữ liệu 2.3.1. Sử 
dụng SFTP Server để lưu trữ tài liệu cục bộ   a) Khái niệm SFTP Server 
 FTP hay File Transfer Protocol là một trong những giao thức phổ biến nhất để 
truyền file. Người dùng muốn thực hiện chuyển file từ nơi này đến nơi khác thì 
sẽ cần sử dụng đến những giao thức tương tự như FTP. 
SFTP (Secure File Transfer Protocol) như đã nói ở trên là một biến thể bảo mật 
hơn của FTP. SFTP giúp ngăn chặn việc chuyển giao thông tin đăng nhập mà 
không được mã hóa như giao thức FTP thông thường. Đồng thời, nó cũng tạo ra 
một mã định danh duy nhất và phải được truyền lại từ máy khách để hoàn thành  14      lOMoARcPSD| 36477832
việc truyền dữ liệu. Nhờ có các biện pháp này, người dùng có thể yên tâm hơn 
khi việc chuyển file với SFTP sẽ có tính bảo mật cao hơn. 
 SFTP Server là công cụ giúp người dùng chuyển files an toàn qua các giao thức 
truyền tải tập tin như SSH File Transfer Protocol hay FTP hỗ trợ SSL/TLS. Việc 
chuyển có thể đạt được thông qua mô hình từ máy chủ đến máy chủ hoặc mô hình  client-to-server. 
 Đối với, SFTP Server người dùng sẽ có toàn quyền quản lý các dữ liệu dưới 
dạng tập tin và thư mục có trên host (ngoại trừ database). Ngoài ra, khi sử dụng 
SFTP Server, người dùng có thể sử dụng máy tính ở xa một cách gián tiếp bằng 
việc truyền tải dữ liệu với độ tin cậy và hiệu quả cao.   
Hình 2.2 Quá trính truyền file trong SFTP Server 
b) Ưu điểm của SFTP Server 
+ Ưu điểm lớn nhất của SFTP Server chính là khả năng bảo mật an toàn + 
Các thông tin truy cập sẽ được mã hoá và tránh tin tặc đánh cắp thông tin 
khi được truyền qua giao thức SFTP. 
+ Có thể nâng cao tính bảo mật bằng việc kết hợp xác thực bằng key pair 
với tên người dùng và password.  15      lOMoARcPSD| 36477832
+ SFTP Server chỉ sử dụng một kết nối máy chủ để truyền dữ liệu và không 
có cổng máy chủ nào khác cần phải mở để nó hoạt động, điều này cũng góp 
phần gia tăng tính bảo mật và thân thiện với tường lửa. 
c) Nhược điểm của SFTP Server 
+ SFTP Server cũng có hạn chế khi khả năng quản lý khóa SSH là tương  đối khó khăn. 
+ Khi người dùng muốn truyền tệp tin, Private key phải cần được cài đặt 
khả năng chống trộm tránh thất lạc. 
+ Để kích hoạt các khoá SSH, người dùng cần phải được đào tạo kỹ càng 
vì thao tác kích hoạt sẽ khá phức tạp. 
 2.3.2. Sử dụng JWT để bảo mật trang Web 
 Đối với bất kỳ một ứng dụng web, di động, desktop…vv chắc chắn các chúng 
ta đều đã từng tạo tài khoản, sau đó phải đăng nhập để sử dụng các tính năng bên 
trong của ứng dụng, hành động đó gọi là Authentication – xác thực người dùng. 
 Đầu tiên chúng ta sẽ tìm hiểu sơ qua mô hình đơn giản quá trình các trang web 
phổ biến hiện nay sử dụng một Session – Cookie để Authenticate.  16      lOMoARcPSD| 36477832  
Hình 2.3 Mô hình hoạt động của JWT 
 Server sẽ ký một mã JWT sau đó gửi về cho phía client lưu trữ, những request 
tiếp theo từ client gửi lên thì phải đính kèm mã JWT này (thông thường là ở 
header), server sẽ check mã này và gửi lại response thành công hoặc thất bại tương  ứng ngược về client.  a) Cấu trúc JSON Web Token 
JSON Web Token bao gồm 3 phần, được ngăn cách nhau bởi dấu chấm (.): 
Header, Payload, Signature. Vì vậy, 1 JWT sẽ có dạng: Header. Payload.  Signature 
Phần header sẽ chứa kiểu token (mặc định là JWT - Thông tin này cho biết 
đây là một Token JWT), và thuật toán sử dụng để mã hóa ra chuỗi JWT (HMAC,  SHA256 hoặc RSA).  Ví dụ:  17      lOMoARcPSD| 36477832  
Hình 2.4 Ví dụ về header của JWT 
● “typ” (type) chỉ ra rằng đối tượng là một JWT 
● “alg” (algorithm) xác định thuật toán mã hóa cho chuỗi là HS256 
 Phần thứ hai của mã thông báo là Payload, chứa các xác nhận quyền sở hữu.. 
Có ba loại xác nhận quyền sở hữu: xác nhận quyền sở hữu đã đăng ký, công khai 
và riêng tư. Nôm na phần Payload chứa các thông tin mà ta muốn lữu trữ trong 
JWT. Claims là một biểu thức về một thực thể (chẳng hạn user) và một số 
metadata phụ trợ. Ngoài ra còn có một số trường standard fields. Payload chứa 
các claims. Có 3 loại claims thường gặp trong Payload: reserved, public và private 
claims. Reserved claims là một số metadata được định nghĩa trước, trong đó một 
số metadata là bắt buộc, số còn lại nên tuân theo để JWT hợp lệ và đầy đủ thông 
tin. Ví dụ: iss (issuer - người phát hành JWT), iat (issued at - thời gian JWT được 
phát hành) exp (expiration time - thời gian hết hạn JWT), sub (subject), aud 
(audience… Public Claims: được cộng đồng công nhận và sử dụng rộng rãi. 
Private Claims: tự định nghĩa (không được trùng với Reserved Claims và Public 
Claims), được tạo ra để chia sẻ thông tin giữa 2 bên đã thỏa thuận và thống nhất  trước đó.Ví dụ:    18      lOMoARcPSD| 36477832
Hình 2.5 Mẫu payload của JWT 
Payload sau đó được mã hóa Base64Url để tạo thành phần thứ hai của Mã  thông báo web JSON. 
Phần Signature sẽ được tạo ra bằng cách mã hóa phần header, payload kèm 
theo một chuỗi khoá bí mật (secret key). Ví dụ: nếu chúng ta muốn sử dụng thuật 
toán HMAC SHA256, chữ ký sẽ được tạo theo cách sau:   
Hình 2.5 Mẫu chữ ký của JWT 
Chữ ký được sử dụng để xác minh thông điệp không bị thay đổi trong quá 
trình thực hiện và, trong trường hợp các mã thông báo được ký bằng khóa cá nhân, 
nó cũng có thể xác minh rằng người gửi JWT là người mà nó nói. 
⇨ Kết hợp 3 phần lại với nhau ta sẽ có một mã JWT dùng trong 1 phiên  đăng nhập  Format: 
.payload>. Ví dụ 1 mã JWT:    Hình 2.6 Mẫu một mã JWT  b) Cách JWT hoạt động 
Trong xác thực, khi người dùng đăng nhập thành công bằng thông tin đăng 
nhập của họ, Mã thông báo web JSON sẽ được trả lại. Vì mã thông báo là thông  19      lOMoARcPSD| 36477832
tin xác thực nên cần phải hết sức cẩn thận để ngăn chặn các vấn đề bảo mật. Nói 
chung, chúng ta không nên giữ các mã thông báo lâu hơn yêu cầu. 
Bất cứ khi nào người dùng muốn truy cập vào một tuyến đường hoặc tài 
nguyên được bảo vệ, tác nhân người dùng phải gửi JWT, thường là trong tiêu đề 
Ủy quyền bằng cách sử dụng lược đồ Bearer. Nội dung của tiêu đề sẽ giống như  sau:   
Hình 2.7 Định dạng tiêu đề của api   
Hình 2.8 Cách thức mà JWT xác thực 
Nhìn vào sơ đồ, ta có thể thấy luồng đi như sau  20      lOMoARcPSD| 36477832
● User thực hiện login bằng cách gửi id/password hay sử dụng các tài khoản 
mạng xã hội lên phía Authentication Server (Server xác thực) 
● Authentication Server tiếp nhận các dữ liệu mà User gửi lên để phục vụ cho 
việc xác thực người dùng. Trong trường hợp thành công, Authentication 
Server sẽ tạo một JWT và trả về cho người dùng thông qua response. 
● Người dùng nhận được JWT do Authentication Server vừa mới trả về làm 
"chìa khóa" để thực hiện các "lệnh" tiếp theo đối với Application Server. 
● Application Server trước khi thực hiện yêu cầu được gọi từ phía User, sẽ 
verify JWT gửi lên. Nếu OK, tiếp tục thực hiện yêu cầu được gọi. 
Phương thức xác thực khi nhận mã JWT của server: Chuỗi JWT có cấu 
trúc H.P.S được Client gửi lên. Server sẽ làm tương tự như sau:  ● Set S1 = S 
● Set S2 = HMAC(SHA256(H.P) với secret key của hệ thống) (Giả sử hệ 
thống sử dụng encryption algorithms SHA256) ● So sánh S1 == S2 ? 
Nếu S1 và S2 khớp nhau, tức là chữ ký hợp lệ, hệ thống mới tiếp decode 
payload và tục kiểm tra các data trong payload. Ví dụ trường exp (expiration  date) 
 2.3.3. Xác thực 2 lớp Two-Factor Authentication (2FA) 
Two-Factor Authentication (thường viết tắt là 2FA hoặc TFA) là một 
phương pháp xác thực người dùng dựa trên 2 yếu tố, một là mật khẩu (thứ phổ 
biến nhất) và thứ hai là một thứ mà người dùng sở hữu, có quyền truy cập đến, ví 
dụ như dấu vân tay, tin nhắn SMS, gửi mã token tới Email hoặc tốt hơn nữa là 
One-time Password (OTP) (mật khẩu một lần có giới hạn hiệu lực theo thời gian).  21      lOMoARcPSD| 36477832
One-time Password hay còn được viết tắt là OTP là một loại mã token mà 
chỉ có thể được sử dụng một lần rồi sau đó nó sẽ bị hủy, không được phép sử dụng  tới lần thứ hai. 
HMAC-based One-Time Password – HOTP là một thuật toán sinh mã OTP 
dựa trên hàm băm HMAC_SHA-1, nó sử dụng 2 thành phần: thứ nhất là một 
Chuỗi Secret cố định, còn thành phần thứ hai là một bộ đếm (Counter) bộ đếm 
này dùng một cái là “Moving-Factor” 
Time-based One-time Password – TOTP về cơ bản chỉ khác HOTP ở chỗ 
là TOTP sẽ sử dụng “thời gian” (Time) để làm bộ đếm (Counter) thay vì “Moving 
Factor” như HOTP. Chính vì việc sử dụng counter là thời gian nên phía Server 
lẫn Client khi đã có chung Secret Key rồi thì không cần có sự tương tác qua lại 
nữa. Vì cả 2 phía đều có quyền truy cập vào thời gian.   
Hình 2.9. Quá trình tạo mã OTP và đăng nhập bằng OTP 
Để thực hiện xác thực 2 lớp cần 3 chức năng để xử lý OTP token. Từ đó cần sử 
dụng module otplib để viết 3 function đảm nhiệm 3 chức năng độc lập.  22      lOMoARcPSD| 36477832  
Hình 2.10. Các function xử lý OTP token bằng otplib 
Đối với xác thực 2 lớp là không bắt buộc nên mỗi tài khoản cần cấu hình 
is2FAEnabled để xác định mỗi người dùng có cần xử dụng xác thực hai lớp hay 
không. Mỗi một User sẽ đi kèm với một mã secret duy nhất, và mã secret này 
cũng bắt buộc phải lưu tương ứng với thông tin của user đó trong cơ sở dữ liệu 
tùy theo thiết kế Database    23      lOMoARcPSD| 36477832
Hình 2.11. Xử lý OTP token và tạo ảnh gửi về cho client 
Sau khi đã có được QR Code, thông qua xử lý của Google Authenticator sẽ sinh 
ra một mã OTP tồn tại trong 1 phút, lúc này client sẽ gửi mã OTP về cho server  kiểm tra và xác thực.   
Hình 2.12. Xử lý token client gửi lên cho server xác thực 
2.4. Môi trường phát triển dự án an toàn 
 2.4.1. Môi trường phát triển source code 
Phần mềm được phát triển trên môi trường develop với 2 ngôn ngữ chính 
là Vuejs và Nodejs. Với trình IDE là Visual Studio Code. 
Vue.js (hay đơn giản là Vue) là một framework JavaScript mã nguồn mở, 
dùng để xây dựng giao diện người dùng (UI) và các ứng dụng single-page (SPA). 
Vue mở rộng HTML và CSS tiêu chuẩn để tạo ra một bộ công cụ mạnh mẽ để xây 
dựng giao diện người dùng của các ứng dụng responsive web. 
Hoạt động trong framework model-view-viewmodel (MVVM), thư viện 
chính của Vue tập trung vào lớp viewmodel, cung cấp đồng bộ hóa reactive giữa 
các lớp model và view thông qua liên kết dữ liệu hai chiều. Điều này giúp đơn 
giản hóa việc tạo các ứng dụng web hiện đại dựa trên mô hình ứng dụng 
singlepage (SPA). Một số ứng dụng web phổ biến dựa vào Vue.js để tạo ra các 
giao diện người dùng mạnh mẽ như: Netflix, Chess.com, GitLab, Grammarly,  Statista…  24      lOMoARcPSD| 36477832
Với ưu điểm kích thước nhỏ gọn, dễ dàng để tìm hiểu và phát triển ứng 
dụng, tích hợp đơn giản, có tính linh hoạt và giao tiếp 2 chiều là lý do chọn Vuejs  trong dự án. 
 NodeJS vốn là môt JavaScript runtime được chạy theo hướng sự kiệ ṇ 
không đồng bô. Đơn vị thiết kế và phát triển NodeJS được thiết kế để xây dựng ̣ 
lên các ứng dụng khác nhau. Và có thể mở rông chúng nhanh, tiết kiệ m chi phí ̣
nhất. NodeJS chạy đa nền tảng phía Server, sử dụng kiến trúc hướng sự kiêṇ 
Event-dtiven. Cùng với đó là cơ chế non-blocking I/O làm cho nó nhẹ và hiêụ quả 
hơn so với các lựa chọn khác có chức năng tương tự. 
 2.4.2. Môi trường phát triển Cơ sở dữ liệu 
Hệ thống sử dung cơ sử dữ liệu MongoDB. MongoDB là một database 
hướng tài liệu (document), một dạng NoSQL database. Vì thế, MongoDB sẽ tránh 
cấu trúc table-based của relational database để thích ứng với các tài liệu như JSON 
có một schema rất linh hoạt gọi là BSON. MongoDB sử dụng lưu trữ dữ liệu dưới 
dạng Document JSON nên mỗi một collection sẽ các các kích cỡ và các document 
khác nhau. Các dữ liệu được lưu trữ trong document kiểu JSON nên truy vấn sẽ  rất nhanh. 
Các tính năng của MongoDB gồm có: 
● Các ad hoc query: hỗ trợ search bằng field, các phép search thông 
thường, regular expression searches, và range queries. 
● Indexing: bất kì field nào trong BSON document cũng có thể được  index. 
● Replication: có ý nghĩa là “nhân bản”, là có một phiên bản giống hệt 
phiên bản đang tồn tại, đang sử dụng. Với cơ sở dữ liệu, nhu cầu lưu trữ 
lớn, đòi hỏi cơ sở dữ liệu toàn vẹn, không bị mất mát trước những sự cố 
ngoài dự đoán là rất cao. Vì vậy, người ta nghĩ ra khái niệm “nhân bản”,  25      lOMoARcPSD| 36477832
tạo một phiên bản cơ sở dữ liệu giống hệt cơ sở dữ liệu đang tồn tại, và 
lưu trữ ở một nơi khác, đề phòng có sự cố. 
● Aggregation: Các Aggregation operation xử lý các bản ghi dữ liệu và 
trả về kết quả đã được tính toán. Các phép toán tập hợp nhóm các giá trị 
từ nhiều Document lại với nhau, và có thể thực hiện nhiều phép toán đa 
dạng trên dữ liệu đã được nhóm đó để trả về một kết quả duy nhất. Trong 
SQL, count(*) và GROUP BY là tương đương với Aggregation trong  MongoDB. 
● Lưu trữ file: MongoDB được dùng như một hệ thống file tận dụng 
những function trên và hoạt động như một cách phân phối qua sharding.    26      lOMoARcPSD| 36477832
CHƯƠNG 3. PHÂN TÍCH, THIẾT KẾ HỆ THỐNG 
3.1 Bài toán đặt ra và phương hướng giải quyết 
 3.1.1. Mục đích thực tế của đề tài 
Tìm hiểu thực tế quá trình lưu trữ tài liệu ở Học viện Kỹ thuật Mật mã từ 
đó xây dựng một phần mềm quản lý lưu trữ tài liệu để hỗ trợ cán bộ của nhà 
trường trong công tác quản lý và tổ chức công tác văn thư lưu trữ.  3.1.2. Mô tả 
công tác quản lý lưu trữ tại Học viện Kỹ thuật Mật mã 
Lưu trữ tài liệu là công việc thường xuyên được tiến hành mỗi tại phòng 
lưu trữ của Học viện Kỹ thuật Mật mã và có thể được mô tả sơ bộ như sau: 
Hàng năm phòng lưu trữ tiến hành thu thập tài liệu theo quy định của nhà 
nước. Sau đó đưa vào bảo quản tập trung thống nhất tại kho lưu trữ. Sau khi đơn 
vị nộp giao tài liệu cho phòng lưu trữ, nhân viên lưu trữ sẽ ghi lại vào sổ nhập tài 
liệu và 2 bên giao nhận tài liệu là đơn vị nộp giao tài liệu và lưu trữ hiện hành sẽ 
phải ký vào biên bản giao nhận tài liệu. Sau đó nhân viên hai trữ sẽ tiến hành 
chỉnh lý phân loại để lập hồ sơ tài liệu. Có hồ sơ rồi thì thống kê mục lục để tra 
cứu phục vụ khai thác hàng ngày. 
Người đến khai thác, sử dụng tài liệu lưu trữ vì mục đích công vụ phải có 
văn bản đề nghị hoặc giấy giới thiệu của cơ quan, tổ chức nơi công tác sau đó 
chuyển cho nhân viên phòng lưu trữ. Nhân viên phỏng lưu trữ sẽ dựa vào thông 
tin ghi trong giấy giới thiệu để tìm kiếm thường dựa vào số ký hiểu văn bản, ngày 
tháng năm phát hành văn bản hoặc cơ quan tổ chức ban hành văn ban để xác định 
xem tài liệu đó thuộc hồ sơ nào. Sau khi tìm thấy văn bản nhân viên lưu trữ sẽ 
photocopy văn bản đó và chuyển đến người khai thác tài liệu. Người mượn tài 
liệu sẽ phải ký nhận vào số phục vụ khác thác tài liệu. 
Ngoài các văn bản tài liệu được lưu trữ, cũng có văn bản ban hành thông 
tin đến các cán bộ có thẩm quyền hoặc tới toàn bộ các cán bộ đang công tác trong  nhà trường.  27      lOMoARcPSD| 36477832
Thông thường các văn bản này thường được soạn thảo và gửi đến cấp trên xem 
xét. Tuy nhiên văn bản cần trả qua các quy trình duyệt và sửa đổi khắt khe trước 
khi được ký bởi Giám đốc học viện và ban hành trên website của nhà trường. 
3.2 Phân tích thiết kế hệ thống 
 3.2.1. Biểu đồ ngữ cảnh của hệ thống   
Hình 3.1. Biểu đồ ngữ cảnh của hệ thống Mô  tả tương tác:  - 
Quản trị viên: Yêu cầu các cập nhật và tra cứu các danh mục quản 
trị,thông tin các tài khoản tới hệ thống, hệ thống sẽ gửi lại các thông tin, trạng thái 
theo yêu cầu của quản trị viên.  - 
Cán bộ nhà trường: Gửi thông tin về tài liệu yêu cầu tới hệ thống 
vànhận lại thông tin về tài liệu đó. Ngoài ra cán bộ nhà trường còn có thể ban 
hành các văn bản tài liệu thông qua sự chấp nhận của các cán bộ khác có thẩm  quyền liên quan.  28      lOMoARcPSD| 36477832
 3.2.2. Sơ đồ phân rã chức năng   
Hình 3.2. Sơ đồ phân rã chức năng 
Mô tả chi tiết các chức năng a) Cập nhật 
- Cập nhật tài liệu: Cán bộ sẽ tiến hành cập nhật tài liệu hoặc cập 
nhật trạng thái của tài liệu trong luồng duyệt. 
- Cập nhật tài khoản: Chức năng này được thực hiện khi Phòng văn 
thư có sự thay đổi về nhân sự. 
- Cập nhật chức vụ: Chức năng này ít khi được sử dụng chủ yếu 
khi mới khởi tạo hệ thống hoặc có sự thay đổi về chức vụ. 
- Cập nhật phòng ban: Chủ yếu sử dụng khi khởi tạo hệ thống hoặc 
cập nhật phòng ban mới. 
- Cập nhật loại tài liệu: Chủ yếu sử dụng khi khởi tạo hệ thống hoặc 
cập nhật loại tài liệu mới.  b) Tra cứu  29      lOMoARcPSD| 36477832
- Tra cứu tài liệu: Khi muốn xem thông tin của bất ký văn bản nào 
đó thì có thể tìm qua chức năng Tra cứu của văn bản. Có thể tìm 
kiếm bằng tên văn bản. 
- Tra cứu tài khoản: Chức năng này được thực hiện khi muốn tìm 
kiếm tài khoản để xem hoặc cập nhật thông tin của tài khoản. 
- Tra cứu chức vụ: Chức năng này được thực hiện khi muốn tìm 
kiếm chức vụ để xem hoặc cập nhật thông tin của chức vụ. 
- Tra cứu phòng ban: Chức năng này được thực hiện khi muốn tìm 
kiếm phòng ban để xem hoặc cập nhật thông tin của phòng ban. 
- Tra cứu loại tài liệu: Chức năng này được thực hiện khi muốn tìm 
kiếm loại tài liệu để xem hoặc cập nhật thông tin của loại tài liệu.  c) Báo cáo 
- Báo cáo về văn bản ban hành: Hệ thống sẽ cung cấp báo cáo số 
lượng về các văn bản được ban hành. 
- Báo cáo về văn bản từ chối duyệt: Hệ thống sẽ cung cấp báo cáo 
số lượng về các văn bản từ chối duyệt. 
- Báo cáo về văn bản chờ duyệt: Hệ thống sẽ cung cấp báo cáo số 
lượng về các văn bản được chờ duyệt. 
 3.2.3. Mô hình liên kết thực thể  a) Các loại thực thể 
- Tài liệu (Mã tài liệu, Tên tài liệu, Loại tài liệu, Trạng thái, link 
SFTP, link GoogleDrive, Tên file, Phiên bản, Luồng duyệt, Mã  chủ sở hữu) 
- Tài khoản (Mã tài khoản, Họ và tên, username, Email, Giới tính, 
Ngày sinh, Số điện thoại, Mật khẩu, Trạng thái, Mã chức vụ,  Quyền) 
- Phòng ban (Mã phòng ban, Tên phòng ban) 
- Chức vụ (Mã chức vụ, Tên chức vụ, Mã phòng ban, Cấp độ)  30      lOMoARcPSD| 36477832  
- Loại tài liệu (Mã loại tài liệu, Tên loại tài liệu, Mô tả) 
b) Mối quan hệ phụ thuộc     
Một tài khoản có thể tạo ra được nhiều tài liệu trên hệ thống.     
Mỗi tài khoản chỉ được phép mang một chức vụ.     
Mỗi phòng ban sẽ có các chức vụ khác nhau, thể hiện quyền hạn khác nhau.   
Mỗi tài liệu thuộc một loại tài liệu để phân loại các văn bản tài liệu cho mục đích  sử dụng khác nhau.   
Trong quá trình duyệt nhiều người có thể tham gia duyệt tài liệu đồng thời một 
người có thể duyệt được nhiều tài liệu.  3.2.4. Mô hình Usecase  31      lOMoARcPSD| 36477832  
Hình 3.3 Mô hình Usecase cho hệ thống 
Trong mô hình xây dựng hệ thống cơ bản có 2 actor chính là người dùng và admin. 
Với những vai trò dành cho admin như dưới đây:  - 
Quản lý tài liệu: admin có thể xem, sửa xóa và thay đổi các trạng 
tháicủa tài liệu của bản thân nhưng actor Admin không tham gia vào luồng duyệt 
tài liệu chính mà chỉ mang tính quản lý các tài liệu.  - 
Quản lý loại tài liệu: Người dùng có thể thêm sửa xóa các loại tài 
liệuphục vụ cho việc quản lý các tài liệu.  - 
Đăng nhập: chức năng này dùng để xác thực người dùng (có tích hợp  JWT để xác thực)  - 
Xem trang chủ: về cơ bản trang này mới chỉ phục vụ chức năng 
xemthông tin đăng nhập và xem số lượng các tài liệu ở các trạng thái.  32      lOMoARcPSD| 36477832 - 
Quản lý chức vụ: Người dùng có thể thêm sửa xóa các chức vụ phục 
vụcho việc quản lý người dùng.  - 
Quản lý phòng ban: Người dùng có thể thêm sửa xóa các phòng 
banphục vụ cho việc quản lý người dùng và duyệt tài liệu.  3.2.5. Mô hình triển 
khai cơ sở hạ tầng 
Về công nghệ áp dụng trong ứng dụng thì sẽ có:  - 
Nodejs: Một framework chịu trách nhiệm cho phần backend, xây 
dựngapi để frontend có thể kết nối tới.  - 
Vuejs: Ta sẽ dùng framework này cho việc xây dựng frontend.  - 
JWT: được tích hợp luôn trong backend(Rails) - SFTP server: dùng 
để lưu trữ các file trên máy chủ.  - 
Google Drive: dùng để lưu trữ các file trên cloud. 
Mô hình triển khai cơ sở hạ tầng cho ứng dụng:    33      lOMoARcPSD| 36477832
Hình 3.4 Mô hình triển khai cơ sở hạ tầng 
Qua mô hình trên, có thể thấy có 5 yếu tố chính, đó là Vuejs để hiển thị 
giao diện người dùng, Nodejs để thực hiện các request từ Vuejs đồng thời tương 
tác dữ liệu qua lại với MongoDB, SFTP Server, Google Drive, MongoDB để lưu 
dữ liệu chính trên web và SFTP Server và Google Drive để lưu các file tài liệu. 
3.3 Phân tích thiết kế luồng chức năng 
 3.3.1. Thiết kế chức năng đăng nhập   
Hình 3.5. Sơ đồ chức năng đăng nhập 
Khi người dùng vào trang đăng nhập sẽ cần phải thực hiện nhập username và 
password vào form nhập. Hệ thống sẽ kiểm tra thông tin đó nếu trùng với dữ liệu 
trong cơ sở dữ liệu sẽ cho đăng nhập, ngược lại sẽ thông báo lỗi. 
 3.3.2. Thiết kế luồng quản lý nhân viên   
Hình 3.6. Sơ đồ chức năng quản lý nhân viên 
Người dùng để có thể cập nhật được một tài khoản cần tìm kiếm thông tin tài 
khoản đó. Nếu có tài khoản trùng khớp với thông tin nhập sẽ thực hiện di chuyển 
sang màn hình cập nhật tài khoản. Sau đó có thể chỉnh sửa thông tin và lưu lại  trên hệ thống.    34      lOMoARcPSD| 36477832
 3.3.3. Thiết kế luồng duyệt tài liệu   
Hình 3.7. Sơ đồ luồng duyệt tài liệu 
Luồng duyệt trên cơ bản là quá trình của một tài liệu từ lúc mới tạo đến lúc được 
ban hành. Khi tài liệu được yêu cầu tới người cần duyệt, nếu tài liệu không hợp 
lệ vì một vài lý do nào đo, người duyệt có thể từ chối duyệt kèm theo lý do từ 
chối. Lúc này người tạo tài liệu ban đầu phải chỉnh sửa lại tài liệu. Trong trường 
hợp tài liệu hợp lệ nhưng người duyệt chưa đủ thẩm quyền có thể yêu cầu thêm 
người khác xem xét và duyệt cùng. Nếu tài liệu được duyệt bởi người có đủ thẩm 
quyền họ có thể ban hành tài liệu cho các nhân viên. Lúc này tài liệu đã được hoàn  tất quá trình duyệt.  35      lOMoARcPSD| 36477832
3.4 Mô hình cơ sở dữ liệu   
Hình 3.8 Mô hình cơ sở dữ liệu 
Theo sơ đồ trên, chúng ta sẽ có 6 bảng trong cơ sở dữ liệu, đó là bảng Document, 
documentType, User, Department, Position và Role. Các bảng được liên kết với 
nhau thông qua các khóa ngoại, tạo ra sự móc nối dữ liệu trong ứng dụng. 
Bảng Document lưu thông tin, link tài liệu, và luồng quá trình duyệt của tài liệu. 
Bảng User lưu thông tin người dùng để đăng nhập vào hệ thống. Bảng phân Role 
để phân quyền cho các User tham gia hệ thống và các bảng khác bổ trợ cho quá 
trình lưu trữ, chức năng và luồng duyệt chính của tài liệu. 
CHƯƠNG 4. XÂY DỰNG ỨNG DỤNG  36      lOMoARcPSD| 36477832
4.1. Chức năng chính của hệ thống 
 4.1.1. Chức năng Đăng nhập 
Phần đầu tiên khi mới truy cập vào trang web là chức năng đăng nhập. Chức 
năng sử dụng bảng User tương tác qua nodejs và xác thực qua phương thức JWT. 
Ta nên chọn phương thức này cho việc xác thực đăng nhập cho ứng dụng vì nó 
khá phổ biến và có tính bảo mật cao.   
Hình 4.1 Màn hình đăng nhập 
Khi đăng nhập vào ứng dụng thì backend sẽ kiểm tra user và password xác 
thực, nếu đúng sẽ trả về 1 token JWT, nếu sai sẽ trả về status 401 Unauthorized:    37      lOMoARcPSD| 36477832
Hình 4.2 Dữ liệu trả về khi đăng nhập thành công 
Token được đặt trong phần Authorization trong response trả về sau khi đăng 
nhập, nắm vai trò xác thực khi phía frontend muốn truy cập vào api. Từ giờ, khi 
mà frontend hay bất kỳ đối tượng nào truy cập vào api cũng cần phải có đoạn 
token này. Một trong những đoạn code cần JWT để xác thực:    38      lOMoARcPSD| 36477832
Hình 4.3 Đoạn code xử lý đăng nhập   
Hình 4.4 Đoạn code xử lý đăng nhập 
Tiếp theo là giao diện của trang chủ sau khi đã được. Trang chủ hiển thị nội 
dung tổng quan các tài liệu và thông tin người đăng nhập.    Hình 4.5 Trang chủ 
Các thông tin của người đăng nhập sau khi login được lưu trong 
LocalStorage và thông tin token được lưu trong Cookie.  39      lOMoARcPSD| 36477832  
Hình 4.6 Thông tin user được lưu ở LocalStorage   
Hình 4.7 Thông tin token được lưu ở Cookies 
Sau khi đăng nhập tùy vào role của người login là gì thì menu hiển thị các chức 
năng người đó có quyền hạn sử dụng trong hệ thống. 
Với quyền là ROLE_ADMIN người dùng có tất cả quyền truy cập và thao tác và 
với quyền ROLE_USER người dùng chỉ có quyền xem trang chủ và tạo, chỉnh 
sửa, xem các tài liệu của mình tạo ra.  40      lOMoARcPSD| 36477832  
Hình 4.8 Left menu của tài khoản Admin và User 
 Với mỗi một loại tài khoản sẽ có các quyền sử dụng chức năng nhất định trong 
hệ thống. Ứng với mỗi quyền đó sẽ hiển thị cho họ các mục được phép truy cập 
trong hệ thống. Như ở trên hình 4.8, tài khoản Admin có tất cả quyền trong khi 
đó tài khoản user chỉ có quyền thao tác với tài liệu của chính họ. 
 4.1.2. Chức năng Quản lý và duyệt tài liệu 
Trong phần quản lý tài liệu, người dùng có thể tạo các tài liệu với các thông tin 
cơ bản như Tên tài liệu, Loại tài liệu, Người sở hữu, tải tệp tài liệu ở dạng docx, 
pdf, pptx, xls. Ngoài ra tài liệu có thể đưa vào luồng duyệt để ban hành tới các 
nhân viên trong hệ thống. File tài liệu có thể lưu trong FSTP Server hoặc Google  Drive hoặc là cả 2.  41      lOMoARcPSD| 36477832  
Hình 4.9 Trang tạo mới tài liệu 
Khi tài liệu được tạo thành công sẽ được hiển thị trên màn hình danh sách tạo mới. 
Việc quản lý luồng duyệt tài liệu phát sinh nhiều thao tác tới duyệt tài liệu. Từ đó 
tạo ra các màn hình danh sách để việc quản lý trở nên chặt chẽ và dễ dàng hơn.   
Hình 4.10 Trang danh sách tài liệu được tạo mới 
Sau khi tạo mới có thể yêu cầu người có thẩm quyền duyệt bằng cách ấn nút Yêu 
cầu duyệt. Lúc này Tài liệu được đưa vào trong quá trình duyệt.  42      lOMoARcPSD| 36477832  
Hình 4.11 Trang danh sách tài liệu chờ duyệt 
Đối với người được yêu cầu duyệt tài liệu này có thể thấy được văn bản xuất hiện 
trong màn hình Danh sách chờ duyệt của họ kèm theo người sở hữu của tài liệu  đó.   
Hình 4.12 Trang danh sách tài liệu cần duyệt 
Lúc này người duyệt văn bản sẽ xem văn bản này và sẽ phát sinh một vài hành  động để xử lý. 
Trường hợp 1: Văn bản đã hợp lệ và người duyệt là người có đủ thẩm quyền thì 
có thể ấn nút Duyệt. Mặt khác văn bản nếu đủ điều kiện để ban hành cho các cấp 
đơn vị người duyệt có thể ấn nút Duyệt và ban hành. Trong trường hợp chỉ ấn nút 
Duyệt văn bản sẽ chờ chủ sở hữu ban hành.   
Hình 4.13 Trang danh sách tài liệu đã ban hành 
Trường hợp 2: Văn bản hợp lệ nhưng một số hạng mục chưa rõ dàng hoặc bản 
thân người duyệt chưa có đủ thẩm quyền hoặc năng lực cần người có vị trí cao 
hơn xử lý tiếp, người duyệt có thể ấn nút Duyệt và yêu cầu duyệt để yêu cầu một 
người khác đánh giá và duyệt tiếp văn bản này.  43      lOMoARcPSD| 36477832  
Hình 4.14 Modal yêu cầu duyệt thêm 
Hệ thống sẽ mở lên một modal để người duyệt có thể chọn một người duyệt thêm 
cho văn bản này. Khi đó văn bản sẽ được chuyển đến người tiếp theo. 
Trường hợp 3: Văn bản không hợp lệ hoặc cần chỉnh sửa, người duyệt có thể từ 
chối duyệt bằng cách ấn nút Từ chối. 
 Hệ thống sẽ mở lên một modal để người duyệt nhập lý do tạo sao từ chối duyệt 
văn bản này. Khi đó văn bản sẽ được chuyển về chủ sở hữu kèm nội dung từ chối.   
Hình 4.15 Mục xem lý do từ chối duyệt 
Khi chủ sở hữu chỉnh sửa và cần người duyệt xem xét và duyệt lại thi ấn nút Yêu  cầu duyệt lại.  44      lOMoARcPSD| 36477832  
Hình 4.16 Danh sách tài liệu bị từ chối duyệt 
Luồng duyệt của văn bản này cứ tiếp diễn cho đến khi được duyệt và ban hành. 
Khi đó văn bản có thể được thấy bởi các user trong hệ thống. 
 4.1.3. Chức năng quản lý người dùng 
Cũng là một trong các chức năng chính của hệ thống. Các tài khoản tham 
gia vào hệ thống cần được quản lý với quyền ROLE_ADMIN. 
Admin sẽ tạo các tài khoản User để đăng nhập và thao tác với văn bản. 
Tài khoản sẽ bao gồm Họ và tên, Username, Email, Số điện Thoại, Giới 
tính, Ngày sinh, Trạng thái và Chức vụ. Chức năng sẽ được liên kết với bảng User.   
Hình 4.17 Trang tạo mới user 
Khi thêm mới một user thành công, họ có thể tham gia vào hệ thống nếu Trạng 
thái được active. Người dùng mới sẽ hiện trên danh sách user.  45      lOMoARcPSD| 36477832   Hình 4.18 Danh sách users 
 4.1.4. Chức năng quản lý chức vụ 
Mỗi user sẽ mang một chức vụ nhất định và dựa vào đó có thể biết được vai trò 
của họ trong việc thẩm quyền duyệt tài liệu. 
Chức vụ sẽ bao gồm Tên chức vụ, Phòng ban và cấp độ.   
Hình 4.19 Màn hình tạo mới chức vụ 
Khi thêm mới chức vụ thành công sẽ hiển thị trên danh sách chức vụ và admin có 
thể thao tác Sửa hoặc Xóa chức vụ đó.  46      lOMoARcPSD| 36477832  
Hình 4.20 Màn hình danh sách chức vụ 
 4.1.5. Chức năng quản lý phòng ban 
 Phòng ban là một phần trong tổ chức, doanh nghiệp hoặc cơ quan nhà nước, 
với nhiệm vụ đặc trưng và trách nhiệm riêng để đóng góp cho mục tiêu chung của 
tổ chức đó. Mỗi phòng ban thường có một số lượng nhân viên và lãnh đạo được 
bổ nhiệm để quản lý hoạt động của phòng ban đó. 
 Mỗi phòng ban có chức năng, nhiệm vụ và mục tiêu cụ thể có thể phụ thuộc 
vào loại cấu hình tổ chức. Ví dụ, phòng ban kế toán phụ trách việc ghi chép và 
giám sát viên tài chính của tổ chức, trong khi phòng ban sản xuất chịu trách nhiệm 
sản xuất sản phẩm hoặc cung cấp dịch vụ. 
Phòng ban của hệ thống sẽ bao gồm Tên phòng ban và cấp độ.    47      lOMoARcPSD| 36477832
Hình 4.21 Màn hình tạo mới phòng ban 
 Khi thêm mới phòng ban thành công sẽ hiển thị trên danh sách phòng ban và 
admin có thể thao tác Sửa hoặc Xóa phòng ban đó.   
Hình 4.22 Màn hình danh sách phòng ban 
 4.1.6. Chức năng quản lý loại tài liệu 
 Mỗi tài liệu có thể mang các đặc tính khác nhau và mục đích sử dụng cũng 
khác nhau nên cần có một thuộc tính để phân biệt giữa các loại tài liệu đó. Loại 
tài liệu sẽ bao gồm Tên loại tài liệu và mô tả.    48      lOMoARcPSD| 36477832
Hình 4.23 Màn hình tạo mới loại tài liệu 
 Khi thêm mới loại tài liệu thành công sẽ hiển thị trên danh sách loại tài liệu và 
admin có thể thao tác Sửa hoặc Xóa loại tài liệu đó.   
Hình 4.24 Màn hình danh sách loại tài liệu 
 4.1.7. Chức năng cấu hình hệ thống 
 Hệ thống quản lý và lưu trữ tài liệu đang sử dụng lưu trữ bằng hai hình thức là 
SFTP Server và Google Drive. Việc cấu hình trong tương lai có thể thay đổi do 
nhiều yếu tố nên phát sinh nhu cầu cần lưu cấu hình và sửa đổi một cách nhanh  chóng và dễ dàng.  49      lOMoARcPSD| 36477832  
Hình 4.25 Màn hình cấu hình server 
Cấu hình các server được lưu dưới dạng JSON và lưu trực tiếp trong file hệ source 
nên không cần một bảng trên cơ sở dữ liệu để lưu trữ.   
Hình 4.26 Các file lưu trữ cấu hình hệ thống 
Và khi cần có một Controller thực hiện việc lưu và lấy dữ liệu cấu hình khi cần 
như trong trường hợp lưu file trong hạng mục Thêm tài liệu hay get file trong  hạng mục xem tài liệu.  50      lOMoARcPSD| 36477832  
Hình 4.27 Đoạn code xử lý get và set cấu hình hệ thống  KẾT LUẬN 
Sau một quá trình với em là rất dài dành ra để nghiên cứu và thực hiện đồ 
án dưới sự chỉ dẫn của ThS. Lê Đức Thuận. Em cũng đã phần nào đạt được các 
yêu cầu đề ra của đồ án, cụ thể như sau: 
Chương 1 đã hiểu rõ ràng về khái niệm quản lý lưu trữ tài liệu cũng như 
tầm quan trọng của những ứng dụng này. Hơn thế nữa là khả năng bảo mật của 
những ứng dụng như thế này đang có thực trang ra sao để có thể đưa ra giải pháp 
cụ thể cho việc xây dựng ứng dụng quản lý lưu trữ tài liệu. 
Chương 2 đã tìm hiểu và nghiên cứu sâu hơn về SFTP, cấu trúc của SFTP, 
cách thức nó hỗ trợ cũng như các giao thức nhằm bảo đảm an toàn bảo mật cho 
các ứng dụng sử dụng.  51      lOMoARcPSD| 36477832
Chương 3 em đã tổng hợp những kiến thức mình nghiên cứu được kết hợp 
với những kiến thức mình đã có để xây dựng lên một ứng dụng quản lý lưu trữ tài 
liệu có yếu tố an toàn bảo mật 
Chương 4 em đã nêu lên việc cấu hình và triển khai ứng dụng đó như thế 
nào hướng tới vấn đề thực tế của dự án trong việc triển khai sau này 
Mặc dù vậy thì tại đồ án lần này em mới chỉ triển khai tích hợp ứng dụng 
với một số công nghệ cơ bản, vẫn còn rất nhiều vấn đề về nâng cao về khả năng 
bảo mật, đảm bảo tính an toàn của hệ thống khi tích hợp các công nghệ này. Đây 
cũng là một động lực giúp em cố gắng học tập và phát triển bản thân hơn trong 
tương lại để có thể tạo ra những sản phẩm bảo mật chất lượng hơn thế nữa. 
TÀI LIỆU THAM KHẢO 
Tài liệu tiếng Việt:    [1]. 
Nguyễn Hồng Sơn – JWT - Từ cơ bản đến chi tiết: 
https://viblo.asia/p/JWT-tu-co-ban-den-chi-tiet-LzD5dXwe5jY 
[2]. Trung Quân - NodeJS triển khai xác thực 2 lớp Two-Factor 
Authentication (2FA): https://trungquandev.com/nodejs-trien-khai-xac-thuc-2-
lop-two-factorauthentication-2fa 
Tài liệu tiếng Anh:  [1] SFtp  Node.js  Reference  Documentation,  Online: 
https://www.chilkatsoft.com/refdoc/nodejsSFtpRef.html 
[2] Protocol Negotiation Extensions to Secure FTP: 
https://datatracker.ietf.org/doc/draft-bonachea-sftp/  [3] React.js Security Guide: 
https://relevant.software/blog/react-js-security-guide/ 
[4] Docs JWT – Introduction to JSON Web Tokens:  https://JWT.io/introduction 
PHỤ LỤC 1: CẤU HÌNH SOLARWIND SFTP SERVER  52      lOMoARcPSD| 36477832
Máy chủ SFTP / SCP từ SolarWinds là một hệ thống truyền tệp an toàn. 
Mặc dù mã hóa được bao gồm trong dịch vụ này có thể giúp tiện ích này phù hợp 
để truyền tệp qua internet, SolarWinds xem Máy chủ SFTP / SCP như một công 
cụ dành cho quản trị viên mạng thay vì người dùng cuối. 
Cần cấu hình cho SFTP để hệ thống có thể kết nối được: 
Trước tiên cần cấu hình thư mục Root lưu các file tài liệu trong trong Root 
Directory. Chấp nhận cả 2 SCp và SFTP bằng cách chọn Both trong Allowed  Protocols .   
Hình 3.8 Cấu hình thư mục và phương thức cho SFTP Server 
Sau đó cấu hình port cho server thành 22 trong tab TCP/IP Settings.  53      lOMoARcPSD| 36477832  
Hình 3.9 Cấu hình cổng cho SFTP Server 
Và cuối cùng cấu hình username để truy cập vào SFTP Server ở tab Users.   
Hình 3.10 Cấu hình tài khoản cho SFTP Server 
PHỤ LỤC 2: CẤU HÌNH TÀI KHOẢN GOOGLE DRIVE  54      lOMoARcPSD| 36477832
 Việc sao lưu trên cloud rất thuận tiện do cơ chế linh hoạt, tiện lợi và dễ dang 
truy xuất nếu cần thiết. Việc thiết lập thông qua giao thức OAuth 2. 
 OAuth 2 là một phiên bản tiếp theo của giao thức OAuth (Open Authorization), 
là một tiêu chuẩn được thiết kế để cho phép một trang web hoặc ứng dụng truy 
cập vào tài nguyên được lưu trữ bởi các ứng dụng web khác thay mặt cho người  dùng. 
 Ở cấp độ cơ bản nhất, trước khi có thể sử dụng OAuth 2.0, Client phải có thông 
tin đăng nhập riêng, client ID và client secret từ Authorization Server để nhận 
dạng và xác thực chính nó khi yêu cầu mã Access token. 
 Sử dụng OAuth 2.0, các yêu cầu truy cập do client khởi tạo, ví dụ như ứng 
dụng dành cho thiết bị di động, trang web, ứng dụng TV thông minh, ứng dụng 
dành cho máy tính để bàn,… yêu cầu mã token, trao đổi và phản hồi tuân theo  quy trình chung sau: 
 Client yêu cầu ủy quyền (Authorization Request) từ Authorization Server, 
cung cấp client ID và secret làm nhận dạng. Đồng thời, cũng cung cấp các scope 
và endpoint URI (redirect URI) để gửi Access Token hoặc Authorization Code. 
Authorization Server xác thực client và xác minh rằng scope yêu cầu được cho  phép. 
 Resource owner tương tác với Authorization Serve để cấp quyền truy cập. 
Authorization Server chuyển hướng trở lại client bằng Authorization Code hoặc 
Access Token, tùy thuộc vào loại. Refresh Token cũng có thể được return. Với 
Access Token, client yêu cầu quyền truy cập vào tài nguyên từ máy Resource  server.  55      lOMoARcPSD| 36477832  
Hình 4.28 Cách thức hoạt động của OAuth 2.0. 
Để cấu hình cho hệ thống bằng OAuth của Google ta truy cập vào link 
https://developers.google.com/oauthplayground/ và đăng nhập tài khoản Google. 
Trên màn hình Google Develop, chọn Drive API v3 rồi chọn 
https://www.googleapis.com/auth/drive    56      lOMoARcPSD| 36477832
Hình 4.29 Chọn Drive API trong cấu hình Google Develops 
Sau đó chúng ta cấu hình các thông số tài khoản Google của chúng ta và mục  setting của màn hình.   
Hình 4.30 Cấu hình OAuth 2.0 
Có hai thông số quan trọng cần phải cài đặt là OAuth Client ID và OAuth Client 
secret, để lấy được hai thông số này cần phải Console Cloud của Google. Tạo một  Api bằng APIs vs Services.    57      lOMoARcPSD| 36477832
Hình 4.31 Tạo một API Service trong Cloud Console 
Ở đây đã tạo sẵn một API mang tên DMS (Document manager system), sau đó 
tạo mới một Secret bằng nút Add secret, lúc này ta đã có OAuth Client ID và 
OAuth Client secret cho OAuth Google   
Hình 4.32 Lấy giá trị Client ID và Client Secret 
Sau bước Authorization và cấp quyền cho hệ thống chúng ta đã có access_token  và refresh_token.    58      lOMoARcPSD| 36477832
Hình 4.33 Lấy được token khi tạo một request trong OAuth 2.0  59    
