Bối cảnh và vấn đề nghiên cứu

Công tác quản lý đồ án tốt nghiệp sinh viên là một nhiệm vụ quan trọng tại các cơ sở giáo dục đại học, bao gồm Khoa An toàn thông tin thuộc Học viện Kỹ thuật Mật mã. Hàng năm, sau mỗi kỳ bảo vệ đồ án, người quản lý phải tiến hành thu thập, phân loại và lưu trữ khối lượng lớn tài liệu liên quan như báo cáo tiến độ từng đợt, quyển báo cáo bản cứng, sản phẩm nghiên cứu lưu trên đĩa CD, cùng phiếu nhận xét của giảng viên hướng dẫn, giảng viên phản biện và bảng điểm của hội đồng bảo vệ.

Phương thức quản lý truyền thống bộc lộ nhiều điểm hạn chế:

  • Việc lưu trữ bản mềm và mã nguồn chưa được số hóa tập trung mà phân tán trên đĩa quang hoặc tài liệu giấy, gây chiếm dụng không gian lưu trữ vật lý.
  • Quá trình tra cứu, tìm kiếm đề tài theo giảng viên hướng dẫn hoặc theo chuyên ngành đào tạo diễn ra thủ công, tiêu tốn thời gian và nhân lực.
  • Nguy cơ thất lạc, hư hỏng dữ liệu hoặc ghi nhận sai lệch thông tin trong quá trình bàn giao hồ sơ bản cứng.
  • Công tác phân công giảng viên quản lý, giảng viên phản biện và thành lập các hội đồng chấm bảo vệ còn thực hiện thủ công, thiếu tính linh hoạt.

Từ thực tế đó, tác giả Nghiêm Đình Giang (lớp AT14D) thực hiện đồ án tốt nghiệp với đề tài "Xây dựng website quản lý đồ án cho Khoa An toàn thông tin" dưới sự hướng dẫn của ThS. Dương Xuân Hiệp, nhằm số hóa toàn diện quy trình quản lý đồ án và tăng cường các tiêu chuẩn an toàn thông tin.

Mục tiêu cụ thể của hệ thống được xác định theo từng nhóm đối tượng sử dụng:

  1. Đối với Quản trị viên: Cập nhật dữ liệu, tìm kiếm thông tin đồ án nhanh chóng; thống kê dữ liệu theo nhiều tiêu chí; lưu trữ tập trung bản mềm và sản phẩm nghiên cứu; tự động hóa việc thành lập danh sách giảng viên quản lý, giảng viên phản biện và hội đồng bảo vệ.
  2. Đối với Giảng viên (quản lý, hướng dẫn, phản biện, thành viên hội đồng): Tra cứu danh sách đồ án được phân công; cập nhật báo cáo tiến độ của sinh viên theo từng đợt; thực hiện đánh giá, nhận xét và cập nhật điểm số.
  3. Đối với Người dùng/Sinh viên: Tra cứu thông tin đề tài và giảng viên; đề xuất đề tài mới cho từng kỳ đồ án; tìm kiếm đồ án theo tên khoa, tên đề tài hoặc cán bộ hướng dẫn.

Phạm vi nghiên cứu tập trung vào quy trình quản lý đồ án tốt nghiệp tại Khoa An toàn thông tin - Học viện Kỹ thuật Mật mã, hoàn thành vào tháng 06 năm 2023.


Cơ sở lý thuyết và phương pháp

Đồ án kết hợp phương pháp khảo sát nghiệp vụ thực tế tại cơ sở đào tạo với phương pháp phân tích thiết kế hệ thống thông tin và kỹ thuật lập trình hướng an toàn.

Mô hình và nền tảng công nghệ được lựa chọn bao gồm:

  • Kiến trúc ứng dụng: Mô hình Client - Server trao đổi dữ liệu qua giao thức HTTP theo chuẩn RESTful API.
  • Hệ quản trị cơ sở dữ liệu: MySQL, hỗ trợ các cơ chế lưu trữ (Storage Engines) như InnoDB, MyISAM, Memory, CSV, Archive, phục vụ thiết kế cơ sở dữ liệu quan hệ với tính toàn vẹn dữ liệu cao.
  • Nền tảng phía máy chủ (Backend): NestJS (xây dựng trên Node.js và TypeScript), áp dụng mô hình module hóa, Dependency Injection, Middleware, Guards và Exception Filters. NestJS tích hợp thư viện Passport để kiểm soát xác thực và phân quyền truy cập.
  • Nền tảng phía máy khách (Frontend): Angular (Google phát triển), hoạt động trên kiến trúc MVVM (Model-View-ViewModel) và ngôn ngữ TypeScript, phát triển giao diện đơn trang (Single Page Application - SPA) hỗ trợ tương tác qua HTTP Client.
  • Cơ chế an toàn thông tin:
    • Xác thực phiên bằng JSON Web Token (JWT) theo tiêu chuẩn RFC, phân tách thành JWT định danh ngắn hạn và Refresh Token dài hạn.
    • Xác thực hai yếu tố (2FA / OTP) qua dịch vụ thư điện tử hoặc ứng dụng bên thứ ba (Google Authenticator, Authy) thông qua thuật toán mã hóa đối xứng.
    • Phân quyền theo nguyên tắc đặc quyền tối thiểu (Least Privilege).
    • Lọc và làm sạch dữ liệu đầu vào bằng thư viện sanitize-html (loại bỏ mã độc kịch bản) và hàm escape của thư viện mysql2 (chống tấn công SQL Injection).
    • Mật khẩu người dùng được băm kèm muối (salt) lặp đệ quy $2^{10} = 1024$ lần. Mã bí mật xác thực 2FA được mã hóa đối xứng bằng thuật toán AES với khóa độ dài 256 bit lưu trong biến môi trường.
    • Ghi nhật ký kiểm toán (Audit Logging) tự động xuất định dạng file CSV theo ngày và lưu trữ trên cơ sở dữ liệu.

Thiết kế và triển khai

Hệ thống được thiết kế theo cấu trúc module phân tách rõ ràng giữa tầng giao diện người dùng, tầng dịch vụ logic nghiệp vụ và tầng cơ sở dữ liệu quan hệ.

+-------------------------------------------------------------+
|               Giao diện người dùng (Angular SPA)            |
+-------------------------------------------------------------+
                              |
                     (HTTP / RESTful API)
                              |
+-------------------------------------------------------------+
|                 Hệ thống xử lý (NestJS Server)              |
|  - JWT Guards / Passport Authentication                     |
|  - Input Sanitization (sanitize-html, mysql2 escape)        |
|  - Business Logic & Logging / Audit Subsystem               |
+-------------------------------------------------------------+
                              |
                        (SQL Queries)
                              |
+-------------------------------------------------------------+
|                 Cơ sở dữ liệu (MySQL Server)                |
+-------------------------------------------------------------+

Thiết kế cơ sở dữ liệu

Cơ sở dữ liệu hệ thống được thiết kế chuẩn hóa gồm 11 bảng dữ liệu chính:

Tên bảng Chức năng lưu trữ Các trường khóa / trường quan trọng
departments Thông tin khoa đào tạo id (PK), name, short_name, is_active
users Tài khoản và thông tin người dùng id (PK), email, password, two_factory, opt_secret, role_id (FK)
user_sessions Phiên đăng nhập người dùng id (PK), device_id, ip_address, refresh_jwt, expired, user_id (FK)
user_events Nhật ký hoạt động người dùng id (PK), title, message, params, user_id (FK)
semesters Thông tin học kỳ id (PK), name, start, end, is_locked
students Danh sách sinh viên thực hiện đồ án id (PK), code, full_name, department_id (FK)
projects Danh sách đề tài đồ án id (PK), name, status, conclusion_score, semester_id (FK), department_id (FK)
project_progress Tiến độ và đánh giá theo đợt project_id (PK), word_file, score, is_approval, type
project_student Liên kết giữa đề tài và sinh viên project_id (PK, FK), student_id (PK, FK)
manager_staff Phân công nhóm giảng viên quản lý id (PK), semester_id (FK), user_id (FK), department_id (FK)
reviewer_staff Phân công nhóm giảng viên phản biện id (PK), semester_id (FK), user_id (FK), department_id (FK)
examiner_council Danh sách hội đồng bảo vệ id (PK), semester_id (FK), location, department_id (FK)
examiner_council_user Thành viên tham gia hội đồng id (PK), examiner_council_id (PK, FK), user_id (PK, FK)

Kiểm thử và đánh giá an toàn

Các cơ chế kỹ thuật an toàn của hệ thống được kiểm thử trực tiếp trên các kịch bản:

  • Kiểm soát phiên: Chuỗi JWT định danh có thời hạn hiệu lực chính xác 15 phút, chuỗi Refresh Token có thời hạn hiệu lực 7 ngày. Khi đăng xuất, token cũ lập tức được đưa vào danh sách thu hồi tại bộ nhớ đệm máy chủ.
  • Phòng thủ xác thực hai bước: Người dùng nhập sai OTP quá 3 lần liên tiếp sẽ bị hệ thống kích hoạt cơ chế khóa thiết bị đăng nhập trong 30 phút.
  • Phòng chống tấn công Web:
    • Dữ liệu đầu vào chứa các thẻ <script> được kiểm tra và lọc sạch bằng sanitize-html trước khi ghi nhận, ngăn chặn tấn công XSS.
    • Các ký tự đặc biệt trong chuỗi truy vấn được xử lý qua hàm escape của mysql2, vô hiệu hóa nguy cơ SQL Injection.
    • Các trường dữ liệu dạng số (điểm số từ 0 đến 10) và thời gian (ngày sinh nhỏ hơn thời điểm hiện tại) được kiểm tra ràng buộc chặt chẽ trước khi xử lý.

Nội dung chính theo từng chương

Chương 1: Tổng quan về hệ thống quản lý đồ án

Chương này trình bày khảo sát thực trạng công tác quản lý đồ án tại Học viện Kỹ thuật Mật mã, chỉ ra sự thiếu đồng bộ trong việc lưu giữ bản mềm, tính cồng kềnh của hồ sơ giấy và nguy cơ mất mát dữ liệu. Tác giả tiến hành phân tích yêu cầu bài toán và xác định các yêu cầu chức năng cốt lõi:

  • Quản lý đề tài và cập nhật báo cáo tiến độ.
  • Quản lý việc đề xuất và phê duyệt đề tài.
  • Quản trị thông tin người dùng và sinh viên (hỗ trợ nhập dữ liệu hàng loạt từ file Excel).
  • Quản lý công tác phân công giảng viên hướng dẫn, giảng viên quản lý, giảng viên phản biện và hội đồng bảo vệ.

Đồng thời, chương 1 đặt ra các yêu cầu bảo mật bắt buộc: xác thực đa yếu tố, phân quyền chặt chẽ, lọc dữ liệu đầu vào chống tấn công SQLi/XSS, mã hóa dữ liệu nhạy cảm, xử lý lỗi an toàn và kiểm toán hành vi người dùng. Cuối chương là phần tổng hợp kiến thức về hệ quản trị cơ sở dữ liệu MySQL, framework NestJS và nền tảng Angular.

Chương 2: Phân tích, thiết kế hệ thống quản lý đồ án

Chương 2 mô hình hóa chi tiết hệ thống thông qua các công cụ biểu đồ chuẩn:

  • Phân rã chức năng: Thiết lập sơ đồ phân cấp từ các nhóm chức năng chính (người dùng, sinh viên, đề tài, đề xuất đề tài, giảng viên quản lý, giảng viên phản biện, hội đồng bảo vệ, quản lý tài khoản cá nhân).
  • Mô hình Use Case: Xác định 4 tác nhân chính gồm Khách vãng lai, Người dùng (Giảng viên), Quản trị viên và Kiểm duyệt viên. Xây dựng use case tổng quát và các use case chi tiết cho từng phân hệ.
  • Biểu đồ hoạt động (Activity Diagram): Trình bày chi tiết luồng xử lý của các tiến trình nghiệp vụ quan trọng gồm: Đăng nhập hệ thống (kết hợp kiểm tra 2FA), Đăng xuất (xóa token và cập nhật danh sách thu hồi), Phê duyệt đề tài (ghi nhận lý do khi từ chối, gửi email thông báo), Thành lập hội đồng bảo vệ (hỗ trợ chế độ ngẫu nhiên hoặc thủ công).
  • Thiết kế an toàn và CSDL: Định nghĩa cơ chế xác thực JWT, quy trình tạo OTP qua email (hiệu lực 15 phút) và Authenticator (hiệu lực 30 giây), cấu trúc băm mật khẩu 1024 vòng, mã hóa AES-256 đối với khóa bí mật OTP. Cuối cùng là thiết kế chi tiết các bảng trong cơ sở dữ liệu MySQL.

Chương 3: Xây dựng hệ thống quản lý đồ án

Chương 3 trình bày kết quả hiện thực hóa phần mềm trên môi trường thực tế:

  • Triển khai thành công sơ đồ quan hệ thực thể (ERD) lên cơ sở dữ liệu MySQL.
  • Xây dựng hoàn chỉnh giao diện và mã nguồn xử lý cho các module: đăng nhập/xác thực 2 bước, danh sách và thêm mới đề tài, nhập xuất dữ liệu qua file Excel, chấm điểm báo cáo tiến độ, phê duyệt đề xuất đề tài, quản lý phân công giảng viên và hội đồng.
  • Đánh giá các tính năng bảo mật: Kiểm tra phản hồi mã lỗi HTTP 403 Forbidden khi người dùng truy cập trái quyền; xác thực chuỗi JWT; kiểm tra giao diện thông báo khóa thiết bị 30 phút khi nhập sai OTP quá 3 lần; kiểm thử khả năng xử lý chuỗi script độc hại và lọc tham số truy vấn cơ sở dữ liệu.

Kết quả và đóng góp

Đồ án đã hoàn thành các mục tiêu kỹ thuật đặt ra với các kết quả cụ thể:

  1. Xây dựng hệ thống phần mềm hoàn chỉnh: Phát triển thành công website quản lý đồ án tốt nghiệp với đầy đủ các phân hệ chức năng dành cho Quản trị viên, Kiểm duyệt viên và Giảng viên.
  2. Số hóa quy trình nghiệp vụ: Hệ thống hỗ trợ nhập danh sách sinh viên, người dùng và đề tài thông qua tệp Excel; hỗ trợ tạo danh sách phân công giảng viên phản biện và hội đồng chấm bảo vệ theo hai hình thức tự động ngẫu nhiên hoặc tùy chỉnh thủ công.
  3. Triển khai kiến trúc an toàn đa lớp:
    • Tích hợp thành công xác thực hai yếu tố 2FA (hỗ trợ Email OTP 6 chữ số và ứng dụng Authenticator với chu kỳ 30 giây).
    • Thiết lập cơ chế khóa tạm thời phiên đăng nhập 30 phút trên thiết bị vi phạm quá 3 lần xác thực mã OTP.
    • Quản lý phiên làm việc bằng chuỗi JWT (hết hạn sau 15 phút) và Refresh Token (hết hạn sau 7 ngày).
    • Bảo vệ mật khẩu người dùng qua hàm băm lặp đệ quy 1024 lần; mã hóa khóa bí mật OTP bằng thuật toán AES-256.
    • Lọc sạch dữ liệu đầu vào chống XSS và SQL Injection bằng các thư viện chuyên dụng, bảo đảm thông tin phản hồi lỗi không làm lộ dấu vết kỹ thuật máy chủ.
    • Ghi nhật ký kiểm toán độc lập theo từng ngày dưới dạng tệp CSV phục vụ công tác truy vết.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên nội dung tài liệu và phạm vi nghiên cứu đã thực hiện:

  • Hệ thống tập trung triển khai và đánh giá các tính năng quản lý, phân công và kiểm soát an toàn trong phạm vi nội bộ Khoa An toàn thông tin; việc tích hợp sâu với các hệ thống quản lý đào tạo chung toàn trường chưa được mở rộng chi tiết.
  • Các kiểm thử an toàn được tiến hành tập trung vào việc ngăn chặn một số tấn công phổ biến (XSS, SQL Injection, brute-force OTP, truy cập trái quyền API), cần tiếp tục hoàn thiện và đánh giá trên các kịch bản tải lớn và môi trường phân tán phức tạp hơn trong tương lai.

Giá trị tham khảo

Tài liệu đồ án là nguồn tham khảo thực tiễn cho các nhóm đối tượng:

  • Sinh viên ngành An toàn thông tin, Công nghệ thông tin: Tham khảo quy trình phân tích thiết kế hệ thống phần mềm hướng an toàn, áp dụng nguyên tắc phân quyền đặc quyền tối thiểu (Least Privilege).
  • Lập trình viên và người nghiên cứu phát triển Web: Học hỏi mô hình kết hợp giữa backend NestJS (TypeScript) và frontend Angular, phương pháp triển khai xác thực JWT kết hợp 2FA (Email OTP và Time-based OTP qua Authenticator), cũng như kỹ thuật mã hóa dữ liệu nhạy cảm bằng AES-256 và băm mật khẩu nhiều vòng.
  • Cán bộ quản lý đào tạo: Tham khảo mô hình số hóa quy trình quản lý đồ án tốt nghiệp, từ khâu duyệt đề xuất, theo dõi báo cáo tiến độ định kỳ đến thành lập hội đồng chấm điểm tự động.

Câu hỏi thường gặp

1. Thời gian hiệu lực của chuỗi JWT định danh và chuỗi Refresh Token trong hệ thống được cấu hình như thế nào?
Chuỗi JWT dùng để định danh người dùng có thời gian hiệu lực là 15 phút. Chuỗi Refresh Token dùng để cấp lại JWT định danh mới có thời gian hiệu lực là 7 ngày.

2. Hệ thống xử lý như thế nào khi người dùng nhập sai mã xác thực hai yếu tố (OTP)?
Người dùng chỉ được phép nhập sai mã xác thực tối đa 3 lần. Nếu vượt quá số lần này, hệ thống sẽ thực hiện khóa chặn quyền đăng nhập của tài khoản trên thiết bị đó trong thời gian 30 phút.

3. Khóa bí mật sử dụng cho xác thực hai bước bằng ứng dụng Authenticator được lưu trữ và bảo vệ ra sao?
Mã bí mật xác thực được mã hóa bằng thuật toán đối xứng AES với độ dài khóa 256 bit trước khi lưu vào cơ sở dữ liệu. Khóa mã hóa/giải mã được lưu trữ trong tệp cấu hình biến môi trường (.env).

4. Quy trình thành lập hội đồng bảo vệ đồ án hỗ trợ những phương thức nào?
Quản trị viên có thể thành lập danh sách hội đồng bảo vệ theo hai phương thức: sắp xếp ngẫu nhiên các đề tài đủ điều kiện vào các hội đồng hoặc thực hiện phân công hoàn toàn thủ công.

5. Hệ thống sử dụng các thư viện nào để phòng chống tấn công XSS và SQL Injection?
Hệ thống sử dụng hàm sanitizeHtml từ thư viện sanitize-html để làm sạch các thẻ script độc hại chống XSS, và sử dụng hàm escape từ thư viện mysql2 để lọc chuỗi truy vấn chống tấn công SQL Injection.


Kết luận

Đồ án tốt nghiệp của sinh viên Nghiêm Đình Giang đã giải quyết thành công bài toán quản lý và lưu trữ đồ án tốt nghiệp cho Khoa An toàn thông tin - Học viện Kỹ thuật Mật mã. Bằng việc kết hợp các công nghệ NestJS, Angular và MySQL cùng hệ thống các cơ chế bảo mật như JWT, 2FA, mã hóa AES-256 và kiểm toán hành vi, hệ thống đáp ứng tốt các yêu cầu nghiệp vụ chuyên môn và đảm bảo an toàn dữ liệu. Kết quả nghiên cứu cung cấp một giải pháp chuyển đổi số khả thi và có giá trị ứng dụng thực tế cao trong môi trường quản lý đào tạo đại học.