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

Theo báo cáo từ Ủy ban Văn hóa, Giáo dục của Quốc hội, từ đầu năm 2020, đại dịch COVID-19 đã gây ra nhiều tác động tiêu cực đối với ngành giáo dục. Hoạt động giảng dạy và học tập trực tiếp tại các trường học trên cả nước bị gián đoạn nhiều tháng liên tiếp, dẫn tới nguy cơ gián đoạn kiến thức ở học sinh, sinh viên. Trong bối cảnh đó, khâu tổ chức thi cử và kiểm tra đánh giá gặp trở ngại lớn do quy định giãn cách, không thể tập trung đông người tại các phòng thi truyền thống.

Bên cạnh yếu tố dịch bệnh, phương thức kiểm tra đánh giá truyền thống vốn tồn tại nhiều điểm hạn chế:

  • Công tác tổ chức thi cử nặng nhọc, tốn kém chi phí in ấn đề thi, thù lao coi thi, chấm thi và phương tiện đi lại.
  • Quá trình chấm thi thủ công dễ xảy ra sai sót, khó đảm bảo tính khách quan và công bằng tuyệt đối.
  • Tình trạng gian lận trong thi cử vẫn diễn biến phức tạp.

Đối với các phần mềm thi trực tuyến hiện có trên thị trường:

  • Các giải pháp nước ngoài gặp rào cản về ngôn ngữ (không hỗ trợ tiếng Việt hoàn chỉnh), chi phí bản quyền cao, công tác đào tạo và bảo trì kỹ thuật phức tạp.
  • Các giải pháp nội địa tồn tại hạn chế về chất lượng đề thi, ngân hàng câu hỏi chưa đa dạng, quy trình sinh đề chưa bám sát quy chuẩn khảo thí.

Khóa luận tốt nghiệp kỹ sư ngành An toàn Thông tin của sinh viên Cao Trọng Nghĩa và Lê Hải Minh (Trường Đại học Công nghệ Thông tin, Đại học Quốc gia TP. Hồ Chí Minh) đặt ra mục tiêu:

  1. Xây dựng một trang web thi trực tuyến an toàn, tin cậy do người Việt phát triển, tối ưu hóa cho người dùng trong nước.
  2. Hỗ trợ đầy đủ hai hình thức thi trắc nghiệm và tự luận, tự động hóa khâu chấm điểm trắc nghiệm và quản lý kết quả.
  3. Ứng dụng giải pháp bảo mật nhằm ngăn chặn tối đa hành vi gian lận thông qua môi trường thi biệt lập.

Phạm vi nghiên cứu của đề tài tập trung vào việc thiết kế kiến trúc phần mềm, xây dựng cơ sở dữ liệu quan hệ, tích hợp trình duyệt chuyên dụng Safe Exam Browser và triển khai thử nghiệm trên hạ tầng điện toán đám mây Amazon Web Services với tên miền thử nghiệm uitonlineexam.tk. Hệ thống phân quyền rõ ràng cho bốn nhóm đối tượng: Người dùng chưa đăng nhập, Trường học (Quản trị viên), Giảng viên và Sinh viên.


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

Khóa luận kết hợp các nền tảng lý thuyết phát triển phần mềm, kiến trúc dịch vụ mạng và các tiêu chuẩn bảo mật hệ thống:

  • Kiến trúc Model-Template-Views (MTV) và RESTful API: Ứng dụng framework Django kết hợp Django REST Framework để xây dựng hệ thống giao diện lập trình ứng dụng (Web API). Mô hình REST định nghĩa việc quản trị tài nguyên thông qua định danh URI và các phương thức chuẩn HTTP (GET, POST, PUT, DELETE).
  • Cơ chế xác thực Token-based với JSON Web Token (JWT): Sử dụng chuẩn định dạng JSON gọn nhẹ gồm ba thành phần ngăn cách bởi dấu chấm: Header (thuật toán mã hóa), Payload (thông tin phiên và người dùng) và Signature (chữ ký số HMAC-SHA256). JWT cho phép xác thực trạng thái đăng nhập một lần (Single Sign On), giảm tải cho máy chủ và giới hạn thời gian hiệu lực của phiên làm việc.
  • Môi trường thi cô lập Safe Exam Browser (SEB): SEB là phần mềm mã nguồn mở biến máy tính cá nhân thành một máy trạm kiểm tra an toàn. Cơ chế hoạt động dựa trên việc phong tỏa màn hình (chế độ toàn màn hình không có thanh điều hướng), khóa phím tắt hệ thống (Ctrl+Alt+Del, Alt+Tab, Cmd+Alt+Esc, chụp màn hình), ngăn chặn mở trình duyệt phụ hoặc ứng dụng ngoài, đồng thời giám sát các tiến trình nền và phát hiện môi trường máy ảo.
  • Hàm băm mã hóa bảo vệ toàn vẹn (SHA256): Tác giả áp dụng cơ chế xác thực Config Key của SEB. Khóa cấu hình được nối với URL yêu cầu và băm thông qua giải thuật SHA256 nhằm đảm bảo yêu cầu gửi lên máy chủ xuất phát từ chính ứng dụng SEB đã được cấp phép.

Phương pháp nghiên cứu thực tế bao gồm:

  • Phương pháp phân tích và thiết kế hệ thống: Khảo sát nhu cầu thực tế của các cơ sở giáo dục, xây dựng các biểu đồ ca sử dụng (Use-case diagram) chi tiết cho từng tác nhân và thiết kế mô hình thực thể quan hệ (ERD).
  • Phương pháp phân tích đối chuẩn: Đánh giá ưu điểm và hạn chế của các hệ thống quản lý học tập và thi cử tiêu biểu gồm Moodle (hệ thống LMS mã nguồn mở quốc tế) và Azota (nền tảng giao và chấm bài trực tuyến tại Việt Nam) để định hình tính năng cần xây dựng.
  • Phương pháp thực nghiệm phát triển và tích hợp hệ thống: Lập trình mã nguồn, cấu hình máy chủ web, thiết lập tích hợp giữa mã nguồn frontend/backend với trình duyệt SEB và kiểm thử luồng chức năng thực tế.

Thiết kế và triển khai

Do đặc thù là đồ án xây dựng phần mềm và hệ thống kỹ thuật, phần kiến trúc và triển khai được tác giả mô tả chi tiết từ hạ tầng đến mã nguồn.

Kiến trúc tổng thể và hạ tầng đám mây

Hệ thống được thiết kế theo mô hình client-server nhiều tầng và đưa lên nền tảng Amazon Web Services (AWS):

  • Amazon Route 53: Đảm nhiệm vai trò quản lý hệ thống phân giải tên miền DNS cho địa chỉ uitonlineexam.tk.
  • Application Load Balancer (ALB): Tiếp nhận lưu lượng truy cập từ Internet, định tuyến phân phối yêu cầu vào máy chủ.
  • ModSecurity Web Application Firewall (WAF): Đặt trước cổng ứng dụng nhằm phát hiện và ngăn chặn các nguy cơ tấn công web phổ biến như SQL Injection, Cross-Site Scripting (XSS).
  • Amazon EC2: Máy chủ ảo chạy hệ điều hành Ubuntu 20.04 LTS dùng để lưu trữ và vận hành toàn bộ khối ứng dụng Backend và Frontend.
  • Amazon S3: Dịch vụ lưu trữ đối tượng được dùng để lưu trữ dữ liệu tĩnh, tệp bài làm và tài nguyên hệ thống.

Triển khai Backend và Frontend

  • Backend: Xây dựng trên ngôn ngữ Python với Django và Django REST Framework. Máy chủ web Apache2 đóng vai trò web server chính, sử dụng module mod_wsgi để chạy ứng dụng Django và kết nối trực tiếp với hệ quản trị cơ sở dữ liệu quan hệ MySQL.
  • Frontend: Phát triển bằng framework NuxtJS 3 kết hợp VueJS 3 và TypeScript. Giao diện sử dụng bộ công cụ Atomic CSS UnoCSS, quản lý state tập trung bằng thư viện Pinia (dung lượng nhẹ xấp xỉ 1 KB) và xử lý tương tác API bằng thư viện Axios.
  • Cấu hình Reverse Proxy: Trên cùng máy ảo Ubuntu 20.04 của EC2, tác giả sử dụng các module mod_proxy và mod_proxy_http của Apache2 để chuyển tiếp yêu cầu từ cổng web ngoài vào dịch vụ Node.js cục bộ đang chạy ứng dụng NuxtJS 3. Giải pháp này cho phép vận hành đồng thời cả frontend và backend trên cùng một hạ tầng máy chủ duy nhất.

Thiết kế mô hình dữ liệu (Database Models)

Hệ thống sử dụng cơ sở dữ liệu quan hệ MySQL với 9 bảng dữ liệu phục vụ quản lý kỳ thi:

Bảng dữ liệu Mục đích và nội dung lưu trữ
CustomUser Quản lý định danh tài khoản, mật khẩu băm, quyền hạn và trạng thái kích hoạt của người dùng.
School Lưu trữ thông tin định danh của các trường học hoặc cơ sở giáo dục quản lý tài khoản.
Student Thông tin hồ sơ sinh viên, liên kết với bảng tài khoản CustomUser và mã trường School.
Teacher Thông tin hồ sơ giảng viên phụ trách tạo đề, giám sát và chấm thi.
Exam Thông tin phòng thi, đề thi, cấu hình thời gian bắt đầu, kết thúc, loại bài thi và trạng thái bảo mật.
Attend Quản lý danh sách sinh viên tham gia vào phòng thi và kết quả điểm số ghi nhận.
Question Ngân hàng lưu trữ nội dung câu hỏi trắc nghiệm và tự luận, phương án lựa chọn và đáp án đúng.
StudentAnswer Bản ghi câu trả lời trắc nghiệm của sinh viên tương ứng với từng câu hỏi trong đề.
StudentEssay Lưu trữ bài làm dạng văn bản hoặc tệp đính kèm của sinh viên đối với các câu hỏi tự luận.

Cơ chế bảo mật và chống gian lận qua Safe Exam Browser

Quy trình kiểm soát tính toàn vẹn của phiên thi được hiện thực hóa qua các bước:

  1. Giảng viên kích hoạt tùy chọn yêu cầu SEB trong cấu hình bài kiểm tra, hệ thống bật cờ sendBrowserExamKey = true.
  2. Trình duyệt SEB phía client được định cấu hình bằng tệp .seb. Khi thí sinh truy cập, SEB tự động sinh một mã Config Key cố định cho tệp cấu hình đó.
  3. Khi thí sinh gửi yêu cầu HTTP tới bài thi, SEB tự động tính toán mã băm SHA256 từ chuỗi kết hợp giữa Config Key và URL truy vấn, sau đó chèn vào tiêu đề HTTP mang tên X-SafeExamBrowser-ConfigKeyHash.
  4. Máy chủ backend trích xuất tiêu đề này, sử dụng Config Key lưu tại hệ thống ghép với URL hiện tại để băm SHA256 độc lập. Nếu hai chuỗi băm trùng khớp, quyền làm bài mới được cấp.
  5. Từ phiên bản SEB 3.0 (macOS, iOS) và SEB 3.4 (Windows), hệ thống khai thác thêm đối tượng JavaScript toàn cục SafeExamBrowser để kiểm tra trực tiếp mã hash trên tầng giao diện trước khi render đề thi.

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

Khóa luận gồm 6 chương với nội dung cụ thể:

Chương 1. Tổng quan đề tài

Trình bày bối cảnh giáo dục dưới tác động của dịch COVID-19, phân tích 4 lý do chính thúc đẩy việc nghiên cứu: tiết kiệm thời gian chấm thi và coi thi, tiết kiệm chi phí in ấn và tổ chức, ngăn ngừa gian lận nhờ cơ chế sinh đề đa dạng, và mở rộng lượng kiến thức kiểm tra tránh tình trạng học tủ. Chương này xác định rõ mục tiêu xây dựng một nền tảng thi trực tuyến an toàn nội địa, chỉ ra các nhược điểm của phần mềm ngoại nhập (chi phí cao, bất đồng ngôn ngữ) và phần mềm trong nước (chất lượng ngân hàng câu hỏi thấp).

Chương 2. Các công nghệ sử dụng

Khảo sát và trình bày cơ sở kỹ thuật của các công nghệ được lựa chọn:

  • Công nghệ Frontend: NuxtJS 3 (tối ưu hóa render phía máy chủ, tự động tách mã), TypeScript (hướng đối tượng, phát hiện lỗi kiểu tĩnh), UnoCSS (Atomic CSS tốc độ xử lý nhanh), VueJS 3, Pinia (quản lý state) và Axios.
  • Công nghệ Backend và Cơ sở dữ liệu: Django Framework (kiến trúc MTV, tích hợp sẵn tính năng bảo mật XSS, SQLi), Django REST Framework, Python, và MySQL.
  • Công nghệ xác thực và bảo mật: JSON Web Token (JWT) và trình duyệt Safe Exam Browser (SEB).
  • Khảo sát sản phẩm tương tự: Phân tích các tính năng của Moodle (hệ thống LMS mã nguồn mở) và Azota (ứng dụng giao bài và kiểm tra học sinh).

Chương 3. Phân tích thiết kế hệ thống

Xây dựng mô hình hóa chức năng và dữ liệu của hệ thống:

  • Mô hình Use-case phân rã theo 4 nhóm tác nhân:
    • Người dùng chưa đăng nhập: Đăng nhập, khôi phục mật khẩu.
    • Trường (Quản trị viên): Quản lý thông tin trường, tạo số lượng lớn tài khoản sinh viên và giảng viên, quản lý danh sách phòng thi.
    • Giảng viên: Tạo đề thi, tạo phòng thi, gán danh sách sinh viên, xem bài thi tự luận, chấm điểm, theo dõi bảng điểm và thống kê bài thi.
    • Sinh viên: Xem danh sách phòng thi được gán, làm bài trắc nghiệm, làm bài tự luận trong môi trường bảo vệ, nộp bài và xem bảng điểm.
  • Sơ đồ thực thể quan hệ (ERD): Định nghĩa cấu trúc liên kết giữa các thực thể người dùng, trường học, đề thi, câu hỏi và bài làm.

Chương 4. Phương pháp triển khai

Mô tả chi tiết phương pháp xây dựng hệ thống:

  • Hạ tầng máy chủ AWS (EC2, S3, ALB, Route 53, ModSecurity WAF).
  • Quy trình cài đặt máy chủ Ubuntu 20.04, cấu hình Apache2 chạy song song mod_wsgi (cho Django) và mod_proxy (cho NuxtJS 3).
  • Phương pháp bảo vệ ứng dụng thông qua cơ chế băm SHA256 của Config Key trong SEB và sử dụng SEB JavaScript API.
  • Thiết kế chi tiết 9 bảng dữ liệu của mô hình MVC.
  • Trình bày toàn bộ hệ thống giao diện: Đăng ký, đăng nhập, trang chủ, đổi mật khẩu, danh sách và chi tiết phòng thi, giao diện làm bài thi trắc nghiệm/tự luận, tạo tài khoản hàng loạt, tạo đề thi, chấm điểm tự luận, bảng điểm, thống kê kết quả thi, giao diện quản lý tài khoản trường và luồng xử lý email reset mật khẩu.

Chương 5. Thực nghiệm, kết quả

Trình bày phương pháp kiểm thử chức năng của hệ thống qua môi trường web thực tế. Tiến hành phân tích đối sánh trực tiếp với Moodle về tính tiện dụng, độ phức tạp trong cấu hình kỳ thi, mức độ bảo mật chống gian lận và tính tương thích với người dùng Việt Nam.

Chương 6. Tổng kết & hướng phát triển

Đánh giá mức độ hoàn thành so với mục tiêu ban đầu, xác nhận hệ thống đã vận hành ổn định các luồng chức năng thi cử và ngăn chặn gian lận qua SEB. Đề xuất các phương hướng nâng cấp hệ thống trong tương lai.


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

Khóa luận đạt được các kết quả kỹ thuật và đóng góp thực tiễn:

  • Xây dựng hoàn chỉnh nền tảng web thi trực tuyến: Triển khai thành công ứng dụng web với đầy đủ các mô-đun chức năng phục vụ 4 nhóm người dùng, hỗ trợ thi kết hợp cả trắc nghiệm (chấm điểm tự động) và tự luận (giảng viên chấm điểm thủ công kèm giao diện hiển thị bài làm).
  • Hiện thực hóa quy trình kiểm soát gian lận nghiêm ngặt: Tích hợp thành công cơ chế xác thực Config Key của Safe Exam Browser qua tiêu đề HTTP X-SafeExamBrowser-ConfigKeyHash và SEB JavaScript API. Hệ thống buộc thí sinh phải làm bài trong môi trường cô lập, vô hiệu hóa các thao tác gian lận phổ biến như chuyển tab trình duyệt, dùng ứng dụng liên lạc bên ngoài, chạy máy ảo hoặc sử dụng phím tắt can thiệp hệ điều hành.
  • Tự động hóa quản trị và liên lạc: Thiết lập hệ thống gửi email tự động thông báo tài khoản mới cho giảng viên, sinh viên và gửi liên kết đặt lại mật khẩu bảo mật khi quên thông tin đăng nhập.
  • Đóng góp so với các nghiên cứu và sản phẩm trước:
    • So với Moodle: Hệ thống tinh gọn hơn, lược bỏ các thành phần LMS phức tạp không cần thiết, tập trung trực tiếp vào quy trình thi cử, tối ưu hóa giao diện tiếng Việt thân thiện và dễ tiếp cận hơn cho giảng viên và sinh viên trong nước.
    • So với Azota: Nâng cao mức độ bảo mật lên cấp độ hệ điều hành thông qua SEB, khắc phục nhược điểm của các hệ sinh thái web thông thường vốn chỉ phát hiện được hành vi thoát khỏi trình duyệt ở mức độ cảnh báo cơ bản.

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

Khóa luận nêu rõ các điểm hạn chế và hướng mở phát triển:

  • Hạn chế kỹ thuật: Cả backend Django và frontend NuxtJS hiện đang được triển khai gộp chung trên một máy chủ ảo Amazon EC2 duy nhất. Mô hình này phù hợp cho giai đoạn thử nghiệm nhưng có thể gặp nút thắt cổ chai về tài nguyên khi số lượng thí sinh truy cập đồng thời tăng cao đột biến.
  • Hạn chế người dùng: Hệ thống phụ thuộc vào việc thí sinh phải cài đặt ứng dụng Safe Exam Browser trên máy tính cá nhân và cấu hình đúng tệp .seb, có thể gây bỡ ngỡ ban đầu cho người dùng chưa quen thao tác kỹ thuật.
  • Hướng phát triển tiếp theo:
    • Nâng cấp và mở rộng thuật toán sinh đề thi tự động từ ngân hàng câu hỏi theo ma trận kiến thức phân tầng.
    • Tách biệt hạ tầng frontend và backend thành các cụm dịch vụ độc lập, áp dụng kỹ thuật cân bằng tải đa máy chủ nhằm tăng khả năng chịu tải cho các kỳ thi quy mô lớn.
    • Nghiên cứu mở rộng khả năng tương thích và phương pháp giám sát an toàn trên các thiết bị di động thông minh (iOS, Android).

Giá trị tham khảo

Tài liệu khóa luận mang lại giá trị tham khảo hữu ích cho các nhóm đối tượng:

  • Sinh viên chuyên ngành An toàn Thông tin và Kỹ thuật Phần mềm: Cung cấp tài liệu tham khảo chi tiết về quy trình tích hợp Safe Exam Browser vào ứng dụng web thông qua tiêu đề HTTP và JavaScript API—một chủ đề ít có tài liệu tiếng Việt hoàn chỉnh.
  • Lập trình viên và kỹ sư hệ thống: Cung cấp mẫu thiết kế kiến trúc kết hợp giữa Single Page Application (NuxtJS 3, TypeScript) và RESTful API (Django REST Framework), cùng giải pháp định tuyến máy chủ web Apache2 bằng cách phối hợp mod_wsgi và mod_proxy.
  • Cán bộ quản lý giáo dục và khảo thí: Cung cấp mô hình tham khảo về quy trình số hóa kỳ thi, phân quyền người dùng và cơ chế tổ chức thi trắc nghiệm kết hợp tự luận an toàn trong các nhà trường.

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

1. Hệ thống sử dụng cơ chế kỹ thuật nào để ngăn chặn sinh viên gian lận khi làm bài thi trực tuyến?

Hệ thống tích hợp phần mềm Safe Exam Browser (SEB). Khi sinh viên vào thi, SEB sẽ phong tỏa toàn bộ màn hình, khóa các tổ hợp phím tắt của hệ điều hành (Ctrl+Alt+Del, Alt+Tab, Cmd+Alt+Esc, PrintScreen), chặn chuyển đổi ứng dụng, ngăn chặn duyệt web tự do và chặn môi trường máy ảo. Đồng thời, hệ thống sử dụng cơ chế mã băm SHA256 ghép từ Config Key và URL trong tiêu đề X-SafeExamBrowser-ConfigKeyHash để đảm bảo sinh viên bắt buộc phải truy cập thông qua đúng cấu hình SEB do giảng viên thiết lập.

2. Frontend và Backend của hệ thống được triển khai trên máy chủ AWS như thế nào?

Cả Frontend (NuxtJS 3/NodeJS) và Backend (Django/Python) đều được cài đặt chung trên một máy chủ ảo Amazon EC2 chạy Ubuntu 20.04 LTS. Máy chủ web Apache2 được cấu hình sử dụng module mod_wsgi để phục vụ trực tiếp backend Django, đồng thời dùng module mod_proxy và mod_proxy_http để chuyển tiếp các truy vấn web sang cổng nội bộ của tiến trình NodeJS chạy NuxtJS.

3. Cơ sở dữ liệu của hệ thống quản lý những thực thể dữ liệu nào?

Hệ thống sử dụng cơ sở dữ liệu MySQL gồm 9 bảng chính: CustomUser (tài khoản người dùng), School (thông tin trường học), Student (thông tin sinh viên), Teacher (thông tin giảng viên), Exam (thông tin kỳ thi/phòng thi), Attend (danh sách sinh viên tham gia thi), Question (ngân hàng câu hỏi), StudentAnswer (bài làm trắc nghiệm) và StudentEssay (bài làm tự luận).

4. Hệ thống phân chia quyền hạn cho những nhóm người dùng nào?

Hệ thống phân quyền cho 4 nhóm đối tượng: Người dùng chưa đăng nhập (đăng nhập, lấy lại mật khẩu), Trường/Admin (quản trị thông tin trường, tạo hàng loạt tài khoản giảng viên và sinh viên), Giảng viên (tạo đề thi, tạo phòng thi, thêm thí sinh, xem bài tự luận, chấm điểm và theo dõi thống kê) và Sinh viên (tham gia thi trắc nghiệm/tự luận trong môi trường an toàn và xem bảng điểm).

5. Khóa luận chỉ ra điểm khác biệt cốt lõi nào giữa hệ thống này so với Moodle và Azota?

So với Moodle, hệ thống loại bỏ các cấu phần quản trị học tập rườm rà, tập trung chuyên biệt vào khảo thí với giao diện trực quan bằng tiếng Việt và cấu hình phòng thi đơn giản hơn. So với Azota, hệ thống nâng cấp khả năng bảo mật từ mức độ theo dõi sự kiện trình duyệt thông thường lên cấp độ cô lập hệ điều hành thông qua trình duyệt chuyên dụng Safe Exam Browser.


Kết luận

Khóa luận tốt nghiệp của sinh viên Cao Trọng Nghĩa và Lê Hải Minh đã giải quyết thành công bài toán tổ chức thi trực tuyến an toàn và tin cậy trong bối cảnh giáo dục hiện đại. Bằng việc kết hợp kiến trúc web hiện đại (Django REST Framework và NuxtJS 3) với cơ chế bảo mật cấp hệ thống của Safe Exam Browser, đề tài đã xây dựng được một giải pháp khả thi, hỗ trợ đầy đủ quy trình khảo thí trắc nghiệm lẫn tự luận. Đây là tài liệu kỹ thuật có giá trị tham khảo rõ ràng cho sinh viên khối ngành công nghệ thông tin và an toàn thông tin trong việc nghiên cứu phát triển các ứng dụng kiểm tra đánh giá trực tuyến có yêu cầu cao về tính toàn vẹn dữ liệu.