Báo cáo đồ án cho đề tài Xây dựng website quản lý đồ án cho Khoa An toàn thông tin Học viện kỹ thuật mật mã. Đề tài lập trình và có tích hợp một số tính năng an toàn cho hệ thống. Báo cáo đạt 8.2 điểm.
Trang 1BAN CƠ YẾU CHÍNH PHỦ
Trang 2BAN CƠ YẾU CHÍNH PHỦ
ThS Dương Xuân Hiệp
Sinh viên thực hiện:
Nghiêm Đình Giang
Lớp: AT14D
Trang 3LỜI CẢM ƠN
Đầu tiên, tôi xin gửi lời cảm ơn chân thành tới các thầy cô trong học viện
Kỹ thuật Mật Mã nói chung cùng các thầy cô trong hệ quản lý sinh viên và khoa
an toàn thông tin nói riêng đã tận tình giảng dạy, truyền đạt cho tôi những kiến thức và kinh nghiệm quý báu trong suốt thời gian là sinh viên học viện, cũng như sự quan tâm và tạo mọi điều kiện thuận lợi cho tôi trong quá trình thực hiện
đồ án
Và để hoàn thành Đồ án tốt nghiệp này, tôi xin được gửi lời cảm ơn chân thành và sự biết ơn sâu sắc tới giảng viên hướng dẫn ThS Dương Xuân Hiệp, người thầy đã tận tình giúp đỡ, trực tiếp chỉ dạy, hướng dẫn tôi trong suốt quá trình làm đồ án tốt nghiệp Trong thời gian làm việc với thầy, không chỉ tiếp thu được những kiến thức chuyên môn mà tôi còn học hỏi được tinh thần trách nhiệm, thái độ làm việc nghiêm túc, hiệu quả từ thầy
Sau cùng xin được gửi lời cảm ơn chân thành tới gia đình, bạn bè đã động viên, đóng góp ý kiến và giúp đỡ tôi trong quá trình học tập, nghiên cứu và hoàn thành đồ án tốt nghiệp
Tôi xin chân thành cảm ơn!
Hà Nội, ngày 27 tháng 06 năm 2023
Sinh viên thực hiện
Nghiêm Đình Giang
Trang 4LỜI CAM ĐOAN
Tôi xin cam đoan bản đồ án này do tôi tự nghiên cứu dưới sự hướng dẫn của giảng viên hướng dẫn ThS Dương Xuân Hiệp
Để hoàn thành đồ án này, tôi chỉ sử dụng những tài liệu đã ghi trong mục tài liệu tham khảo, ngoài ra không sử dụng bất cứ tài liệu nào khác mà không được ghi
Nếu sai, tôi xin chịu mọi hình thức kỷ luật theo quy định của Học viện
Hà Nội, ngày 27 tháng 06 năm 2023
Sinh viên thực hiện
Nghiêm Đình Giang
Trang 5MỤC LỤC
LỜI CẢM ƠN i
LỜI CAM ĐOAN ii
MỤC LỤC iii
DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT vi
DANH MỤC HÌNH VẼ vii
DANH MỤC BẢNG BIỂU vii
MỞ ĐẦU x
CHƯƠNG 1 TỔNG QUAN VỀ HỆ THỐNG QUẢN LÝ ĐỒ ÁN 1
1.1 Khảo sát 1
1.2 Phân tích bài toán 1
1.3 Các yêu cầu chức năng của hệ thống 2
1.3.1 Chức năng quản lý đề tài 2
1.3.2 Chức năng quản lý đề xuất đề tài 3
1.3.3 Chức năng quản lý người dùng 3
1.3.4 Chức năng quản lý sinh viên 3
1.3.5 Chức năng quản lý giảng viên quản lý 3
1.3.6 Chức năng quản lý giảng viên phản biện 3
1.3.7 Chức năng quản lý hội đồng bảo vệ 3
1.4 Các yêu cầu an toàn của hệ thống 4
1.4.1 Xác thực 4
1.4.2 Phân quyền 4
1.4.3 Lọc dữ liệu đầu vào chống một số tấn công phổ biến 4
1.4.4 Mã hoá dữ liệu nhạy cảm 4
1.4.5 Xử lý lỗi 5
1.4.6 Kiểm toán 5
1.5 Tìm hiểu ngôn ngữ lập trình sử dụng 5
1.5.1 Hệ quản trị cơ sở dữ liệu MySQL 5
1.5.2 NestJS 6
1.5.3 Angular 7
Trang 6CHƯƠNG 2 PHÂN TÍCH, THIẾT KẾ HỆ THỐNG QUẢN LÝ ĐỒ ÁN 9
2.1 Các chức năng chính của hệ thống 9
2.1.1 Chức năng quản lý người dùng 9
2.1.2 Chức năng quản lý sinh viên 9
2.1.3 Chức năng quản lý đề tài 10
2.1.4 Chức năng quản lý đề xuất đề tài 10
2.1.5 Chức năng quản lý giảng viên quản lý 10
2.1.6 Chức năng quản lý giảng viên phản biện 11
2.1.7 Chức năng hội đồng bảo vệ 11
2.1.8 Chức năng quản lý tài khoản cá nhân 11
2.2 Biểu đồ use case 12
2.2.1 Các tác nhân của hệ thống 12
2.2.2 Biểu đồ use case tổng quát 12
2.2.3 Biểu đồ use case quản lý đề tài 13
2.2.4 Biểu đồ use case quản lý đề xuất đề tài 14
2.2.5 Biểu đồ use case quản lý người dùng 15
2.2.6 Biểu đồ use case quản lý sinh viên 16
2.2.7 Biểu đồ use case quản lý giảng viên quản lý 17
2.2.8 Biểu đồ use case quản lý giảng viên phản biện 18
2.2.9 Biểu đồ use case quản lý hội đồng bảo vệ 19
2.3 Biểu đồ hoạt động 20
2.3.1 Biểu đồ hoạt động chức năng đăng nhập 20
2.3.2 Biểu đồ hoạt động chức năng đăng xuất 21
2.3.3 Biểu đồ hoạt động chức năng phê duyệt đề tài 22
2.3.4 Biểu đồ hoạt động chức năng thành lập danh sách hội đồng 23
2.4 Cơ chế an toàn 24
2.4.1 Cơ chế xác thực 24
2.4.2 Cơ chế xác thực hai yếu tố 25
2.4.3 Cơ chế phân quyền 27
2.4.4 Cơ chế lọc dữ liệu đầu vào chống một số tấn công phổ biến 27
Trang 72.4.5 Cơ chế mã hoá dữ liệu nhạy cảm 28
2.4.6 Cơ chế xử lý lỗi 29
2.4.7 Cơ chế kiểm toán 30
2.5 Thiết kế cơ sở dữ liệu 30
CHƯƠNG 3 XÂY DỰNG HỆ THỐNG QUẢN LÝ ĐỒ ÁN 37
3.1 Xây dựng cơ sở dữ liệu 37
3.2 Xây dựng các chức năng 38
3.2.1 Chức năng đăng nhập và xác thực hai yếu tố 38
3.2.2 Chức năng quản lý đề tài 40
3.2.3 Chức năng quản lý đề xuất đề tài 47
3.2.4 Chức năng quản lý người dùng 48
3.2.5 Chức năng quản lý sinh viên 51
3.2.6 Chức năng quản lý giảng viên quản lý 53
3.2.7 Chức năng quản lý giảng viên phản biện 55
3.2.8 Chức năng quản lý hội đồng bảo vệ 57
3.2.9 Chức năng quản lý tài khoản cá nhân 59
3.2.10 Chức năng xem thống kê 61
3.3 Đánh giá một số tính năng an toàn của hệ thống 62
3.3.1 Xác thực hai yếu tố 62
3.3.2 Xác thực và phân quyền 62
3.3.3 Giới hạn lưu lượng truy cập 64
3.3.4 Chống một số tấn công phổ biến 65
KẾT LUẬN 67
TÀI LIỆU THAM KHẢO 68
PHỤ LỤC 69
Trang 8DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT
STT Từ viết tắt Thuật ngữ đầy đủ/ Giải thích
1 API Application Programming Interface
5 JSON JavaScript Object Notation
7 OTP One Time Password (Mật khẩu dùng một lần)
8 SQL Structured Query Language (Ngôn ngữ truy vấn có cấu
trúc)
9 URI Uniform Resource Identifier
10 XSS Cross-site Scripting (Tấn công script liên miền)
11 2FA Two Factor Authentication (Xác thực hai bước)
Trang 9DANH MỤC HÌNH VẼ
Hình 2.1 Biểu đồ phân rã chức năng hệ thống 9
Hình 2.2 Biểu đồ phân rã chức năng quản lý người dùng 9
Hình 2.3 Biểu đồ phân rã chức năng quản lý sinh viên 9
Hình 2.4 Biểu đồ phân rã chức năng quản lý đề tài 10
Hình 2.5 Biểu đồ phân rã chức năng quản lý đề xuất đề tài 10
Hình 2.6 Biểu đồ phân rã chức năng quản lý giảng viên quản lý 10
Hình 2.7 Biểu đồ phân rã chức năng quản lý giảng viên phản biện 11
Hình 2.8 Biểu đồ phân rã chức năng quản lý hội đồng bảo vệ 11
Hình 2.9 Biểu đồ phân rã chức năng quản lý tài khoản cá nhân 11
Hình 2.10 Biểu đồ use case tổng quát 12
Hình 2.11 Biểu đồ use case quản lý đề tài 13
Hình 2.12 Biểu đồ use case quản lý đề xuất đề tài 14
Hình 2.13 Biểu đồ use case quản lý người dùng 15
Hình 2.14 Biểu đồ use case quản lý sinh viên 16
Hình 2.15 Biểu đồ use case quản lý giảng viên quản lý 17
Hình 2.16 Biểu đồ use case quản lý giảng viên phản biện 18
Hình 2.17 Biểu đồ use case quản lý hội đồng bảo vệ 19
Hình 2.18 Biểu đồ hoạt động chức năng đăng nhập 20
Hình 2.20 Biểu đồ hoạt động chức năng đăng xuất 21
Hình 2.21 Biểu đồ hoạt động chức năng phê duyệt đề tài 22
Hình 2.22 Biểu đồ hoạt động chức năng thành lập danh sách hội đồng 23
Hình 2.23 Biểu đồ tuần tự luồng xác thực bằng JWT 25
Hình 2.24 Sơ đồ quá trình kích hoạt xác thực hai bước thông qua ứng dụng Authentication 26
Hình 2.25 Sơ đồ quá trình băm mật khẩu 28
Hình 2.26 Sơ đồ quá trình mã hoá/ giải mã AES 29
Hình 3.1 Sơ đồ ERD 37
Hình 3.2 Giao diện chức năng đăng nhập 38
Hình 3.3 Giao diện chức năng xác thực thông qua ứng dụng 39
Hình 3.4 Giao diện chức năng xác thực thông qua email 39
Hình 3.5 Giao diện danh sách đề tài 40
Hình 3.6 Giao diện thêm mới/ chỉnh sửa thông tin đề tài 41
Hình 3.7 Giao diện đề xuất đề tài 41
Hình 3.8 Giao diện xoá đề tài 42
Hình 3.9 Giao diện nhập đề tài từ file Excel 42
Hình 3.10 Giao diện báo cáo tiến độ 43
Hình 3.11 Giao diện giảng viên hướng dẫn nhận xét 44
Hình 3.12 Giao diện giảng viên phản biện nhận xét 44
Trang 10Hình 3.13 Giao diện hội đồng chấm điểm 45
Hình 3.14 Giao diện chi tiết đề tài 46
Hình 3.15 Giao diện danh sách đề xuất đề tài 47
Hình 3.16 Giao diện phê duyệt đề tài 47
Hình 3.17 Giao diện từ chối đề tài 48
Hình 3.18 Giao diện danh sách người dùng 48
Hình 3.19 Giao diện thêm mới/ chỉnh sửa thông tin người dùng 49
Hình 3.20 Giao diện chức năng nhập ngườ dùng từ file Excel 49
Hình 3.21 Giao diện kích hoạt/ huỷ kích hoạt người dùng 50
Hình 3.22 Giao diện chi tiết người dùng 50
Hình 3.23 Giao diện danh sách sinh viên 51
Hình 3.24 Giao diện thêm mới/ chỉnh sửa thông tin sinh viên 51
Hình 3.25 Giao diện nhập sinh viên từ file Excel 52
Hình 3.26 Giao diện xoá sinh viên 52
Hình 3.27 Giao diện danh sách giảng viên quản lý 53
Hình 3.28 Giao diện thêm mới/ chỉnh sửa nhóm quản lý 53
Hình 3.29 Giao diện thành lập danh sách nhóm quản lý (1) 54
Hình 3.30 Giao diện thành lập danh sách quản lý (2) 54
Hình 3.31 Giao diện danh sách giảng viên phản biện 55
Hình 3.32 Giao diện thêm mới/ chỉnh sửa nhóm phản biện 55
Hình 3.33 Giao diện thành lập danh sách nhóm phản biện (1) 56
Hình 3.34 Giao diện thành lập danh sách nhóm phản biện (2) 57
Hình 3.35 Giao diện danh sách hội đồng 57
Hình 3.36 Giao diện thêm mới/ chỉnh sửa hội đồng 58
Hình 3.37 Giao diện thành lập danh sách hội đồng (1) 58
Hình 3.38 Giao diện thành lập danh sách hội đồng (2) 59
Hình 3.39 Giao diện quản lý tài khoản cá nhân 59
Hình 3.40 Giao diện thay đổi Email cá nhân 60
Hình 3.41 Giao diện thay đổi mật khẩu 60
Hình 3.42 Giao diện thay đổi phương thức xác thực 61
Hình 3.43 Giao diện xem thống kê tổng quan 61
Hình 3.44 Giao diện thông báo khoá đăng nhập thiết bị 62
Hình 3.45 API thông báo chuỗi JWT không hợp lệ 63
Hình 3.46 Giao diện thông báo người dùng không có quyền truy cập 63
Hình 3.47 API thông báo người dùng không có quyền truy cập 64
Hình 3.48 API thông báo lỗi giới hạn lưu lượng truy cập 65
Hình 3.49 API thông báo lỗi dữ liệu đầu vào không hợp lệ 66
Hình 3.50 Giao diện hiển thị dữ liệu chứa script 66
Trang 11DANH MỤC BẢNG BIỂU
Bảng 2.1 Bảng departments (Khoa) 30
Bảng 2.3 Bảng users (Người dùng) 31
Bảng 2.4 Bảng user_sessions (Phiên người dùng) 31
Bảng 2.5 Bảng user_events (Nhật ký hoạt động người dùng) 32
Bảng 2.6 Bảng semesters (Học kỳ) 32
Bảng 2.7 Bảng students (Sinh viên) 33
Bảng 2.8 Bảng projects (Đề tài) 33
Bảng 2.9 Bảng project_progress (Tiến độ đồ án) 34
Bảng 2.10 Bảng project_student (Đồ án - Sinh viên) 35
Bảng 2.11 Bảng manager_staff (Giảng viên quản lý) 35
Bảng 2.12 Bảng reviewer_staff (Giảng viên phản biện) 35
Bảng 2.13 Bảng examiner_council (Hội đồng bảo vệ) 35
Bảng 2.14 Bảng examiner_council_user (Hội đồng bảo vệ - Người dùng) 36
Trang 12MỞ ĐẦU
Trong những năm gần đây, nền công nghệ thông tin của nước ta đã có những phát triển trên mọi lĩnh vực trong cuộc sống cũng như trong lịch vực quản lý xã hội Một trong những lĩnh vực được chú trọng nhất là các hệ thống thông tin quản lý nói chung Tuy nhiên, hiện nay do quy mô, tính phức tạp của công việc ngày càng cao nên việc xây dựng hệ thống thông tin quản lý không chỉ là việc lập trình đơn giản mà phải xây dựng một cách có hệ thống và đảm bảo được các yêu cầu về an toàn thông tin
Việc quản lý đồ án tốt nghiệp sinh viên là một yêu cầu thiết yếu của mỗi trường đại học Để quản lý đồ án và lưu trữ có hiệu quả thì không đơn giản bởi đòi hỏi kỹ năng của người quản lý Làm sao để vừa có thể kiểm soát được số lượng đề tài của các khoá, các hệ đào tạo khác nhau vừa có thể lưu trữ nó làm tài liệu cho các bạn sinh viên khoá sau và đồng thời phân công giảng viên quản lý một cách hợp lý Việc quản lý và lưu trữ đồ án trước đây chủ yếu sử dụng phương pháp thủ công, bản mềm, source code đồ án thường lưu trữ trên đĩa, … chiếm diện tích lưu trữ lớn Do đó, khi quản lý hay tìm kiếm mất nhiều thời gian
và công sức mà hiệu quả đem lại không cao, đôi khi còn xảy ra sai sót hay mất mát dữ liệu không đáng có Hiện nay công tác quản lý đồ án tốt nghiệp sinh viên của một số trường đại học nói chung và Khoa An toàn thông tin - Học viện kỹ thuật mật mã nói riêng còn chưa đạt hiệu quả cao Do đó, đòi hỏi một công cụ chuyên dụng trợ giúp cho công việc quản lý và lưu trữ đồ án tốt nghiệp sinh viên
là một nhu cầu tất yếu để đảm bảo hiệu quả và tiết kiệm được thời gian cho cán
bộ quản lý cũng như sinh viên và giảng viên
Vì vậy, được sự hướng dẫn và giúp đỡ của ThS Dương Xuân Hiệp, tôi đã chọn đề tài: “Xây dựng website quản lý đồ án tốt nghiệp” làm đề tài cho đồ án tốt nghiệp của mình Mặc dù đã nỗ lực hết sức mình trong suốt thời gian nhận đề tài nhưng với kiến thức có hạn của bản thân, chắc hẳn đồ án tốt nghiệp của tôi khó tránh khỏi những thiếu sót Tôi rất mong nhận được sự cảm thông, những lời góp ý và chỉ bảo tận tình của quý thầy cô
Trang 13CHƯƠNG 1 TỔNG QUAN VỀ HỆ THỐNG QUẢN LÝ ĐỒ ÁN
đồ án như: nhận xét giáo viên hướng dẫn, nhận xét giáo viên phản biện, điểm hội đồng bảo vệ của mỗi sinh viên Tuy nhiên, bản mềm đồ án của các bạn sinh viên vẫn chưa được lưu trữ lại Danh sách giảng viên hướng dẫn, giảng viên phản biện, hội đồng bảo vệ vẫn lưu lại thủ công trên các bản cứng
Trong quá trình quản lý, khi người quản lý muốn tìm kiếm đề tài theo giảng viên hướng dẫn, hay theo khoa đào tạo, … thì họ phải tìm kiếm rất thủ công, mất nhiều thời gian và công sức cộng với việc lưu trữ lại các đồ án làm tài liệu tham khảo cho các bạn sinh viên khóa sau rất cồng kềnh mất nhiều diện tích mà không đầy đủ nhiều khi còn gây mất mát và hỏng dữ liệu
Từ những thực tế trên, đặt ra một bài toán Quản lý Đồ án tốt nghiệp sinh viên cho Khoa như sau: Xây dựng cơ sở dữ liệu để lưu các thông tin liên quan đến đồ án sinh viên, sau đó xây dựng phần mềm Quản lý Đồ án tốt nghiệp sinh viên thực hiện các thao tác cập nhật các thông tin liên quan đến đồ án, tìm kiếm, lưu trữ bản mềm và các sản phẩm nghiên cứu của đồ án
1.2 Phân tích bài toán
Quản lý Đồ án tốt nghiệp sinh viên Học viện Kỹ thuật mạt mã nhằm mục đích quản lý và lưu trữ thông tin về đồ án tốt nghiệp sinh viên dễ dàng và chính xác hơn, cho phép người sử dụng cập nhật, thống kê, tìm kiếm các thông tin về
Đồ án
Trang 14Từ những phân tích trên, có thể đưa ra các mục tiêu của hệ thống như sau:
• Lưu trữ được bản mềm và các sản phẩm nghiên cứu của đồ án
• Dễ dàng thành lập danh sách giảng viên quản lý đồ án, danh sách giảng viên phản biện, các hội đồng bảo vệ
Giảng viên quản lý/ Giảng viên hướng dẫn/ Giảng viên phản biện/ Thành viên hội đồng bảo vệ:
• Tra cứu danh sách đồ án dưới sự quản lý, hướng dẫn, …
• Cập nhật báo cáo, tiến độ của sinh theo từng đợt báo cáo
• Chấm điểm, đánh giá đồ án
Người dùng:
• Xem các thông tin về đồ án, giảng viên, một cách trực quan với các thông tin chi tiết đi kèm
• Đề xuất các đề tài mới cho từng kỳ đồ án
• Tìm kiếm đồ án, giảng viên theo các tiêu chí khác nhau: như tìm kiếm đồ
án theo khoa, theo tên, theo giảng viên hướng dẫn, …
1.3 Các yêu cầu chức năng của hệ thống
1.3.1 Chức năng quản lý đề tài
Chức năng quản lý đề tài bao gồm các tính năng cơ bản như thêm, sửa, xoá
đề tài và xem thông tin chi tiết đề tài Giảng viên quản lý cũng có trách nhiệm cập nhật báo cáo tiến độ của sinh viên theo từng đợt báo cáo Điều này cho phép giảng viên quản lý theo dõi tiến độ hoàn thành của sinh viên và đưa ra các biện pháp hỗ trợ hoặc chỉnh sửa nếu cần thiết Giảng viên hướng dẫn và giảng viên phản biện có thể sử dụng tính năng nhận xét để đánh giá đề tài của sinh viên Hội đồng chấm điểm đề tài cũng có thể để cập nhật thông tin điểm số sau khi sinh viên bảo vệ thành công Ngoài ra, hệ thống còn cho phép quản trị viên nhập danh sách đồ án thông qua file Excel
Trang 151.3.2 Chức năng quản lý đề xuất đề tài
Chức năng quản lý đề xuất đề tài cho phép kiểm duyệt viên có thể xem danh sách các đề xuất đề tài từ các giảng viên Sau khi xem xét, kiểm duyệt viên
có thể từ chối hoặc phê duyệt các đề xuất này
1.3.3 Chức năng quản lý người dùng
Chức năng quản lý người dùng cho phép người quản trị thêm mới hoặc cập nhật thông tin tài khoản của người dùng vào hệ thống, bao gồm họ và tên, địa chỉ, số điện thoại, email, Khi thêm một người dùng mới, hệ thống sẽ tự động tạo một tài khoản và cấp quyền truy cập cho người dùng đó
Chức năng thay đổi trạng thái tài khoản người dùng cho phép quản trị viên tạm ngưng hoặc kích hoạt tài khoản của người dùng Ngoài ra, quản trị viên cũng có thể nhập danh sách người dùng thông qua file Excel Chức năng này cho phép quản trị viên tải lên file Excel chứa thông tin của nhiều người dùng cùng một lúc, và hệ thống sẽ tự động thêm các người dùng này vào hệ thống
1.3.4 Chức năng quản lý sinh viên
Chức năng quản lý sinh viên cho phép quản trị viên có thể thêm mới, cập nhật hoặc xoá sinh viên Ngoài ra, quản trị viên cũng có thể nhập danh sách sinh viên thông qua file Excel
1.3.5 Chức năng quản lý giảng viên quản lý
Chức năng cho phép quản trị viên phân công giảng viên quản lý cho các nhóm đồ án Giảng viên quản lý sẽ có thể cập nhập báo cáo tiến độ cho các đồ
án do mình quản lý
1.3.6 Chức năng quản lý giảng viên phản biện
Chức năng cho phép quản trị viên phân công giảng viên phản biện để chấm các nhóm đồ án Giảng viên phản biện sẽ có thể nhận xét, đánh giá và đề nghị cho phép sinh viên được bảo vệ đồ án hay không
1.3.7 Chức năng quản lý hội đồng bảo vệ
Chức năng cho phép quản trị viên thành lập các hội đồng bảo vệ Sau khi sinh viên bảo vệ đồ án thành công, hội đồng sẽ thực hiện cho điểm và thư ký hội đồng sẽ cập nhật điểm của đồ án lên hệ thống
Trang 161.4 Các yêu cầu an toàn của hệ thống
1.4.1 Xác thực
Phương thức xác thực cơ bản là sử dụng tài khoản và mật khẩu của người dùng để xác thực Sau khi xác thực bằng tài khoản và mật khẩu xong cần có một phương thức xác thực khác để duy trì trạng thái đã đăng nhập của người dùng,
và đó là phương thức sử dụng JWT
Ngoài ra, để tăng cường tính bảo mật thì người dùng có thể bật chức năng xác thực hai yếu tố Có hai hình thức nhận mã xác thực hai yếu tố là thông qua email hoặc thông qua ứng dụng Authentication của bên thứ ba Nếu người dùng nhập sai mã xác thực quá ba lần, hệ thống sẽ khoá chặn tài khoản đăng nhập trên thiết bị đó trong 30 phút
1.4.2 Phân quyền
Các tài khoản người dùng trong hệ thống đều được phân quyền rõ ràng, và chỉ một loại quyền duy nhất Việc phần quyền nhóm người dùng được thực hiện theo nguyên tắc “Đặc quyền tối thiểu”, tức từng nhóm người dùng sẽ chỉ có quyền thực hiện đúng các nhiệm vụ của người đó trong hệ thống Ví dụ, cán bộ giảng viên sẽ chỉ có thể thực hiện các chức năng như tra cứu đồ án, xem thông tin đồ án và đề xuất đồ án Còn kiểm duyệt viên chỉ có thể thực hiện các chức năng tra cứu và phê duyệt các đồ án đã đề xuất, …
1.4.3 Lọc dữ liệu đầu vào chống một số tấn công phổ biến
Tất cả dữ liệu được gửi tới máy chủ hệ thống, từ người dùng, từ bên thứ ba… đều sẽ cần được làm sạch qua các hàm lọc làm sạch dữ liệu, hàm lọc chống các tấn công phổ biến như SQL injection, XSS… Trước khi được sử dụng, được lưu vào cơ sở dữ liệu…
1.4.4 Mã hoá dữ liệu nhạy cảm
Các thông tin thông thường sẽ được lưu vào cơ sở dữ liệu dưới dạng rõ, còn các thông tin nhạy cảm thì sẽ được lưu dưới dạng băm hoặc dạng mã hóa
Cụ thể, mật khẩu đăng nhập của người dùng, hệ thống sẽ chỉ lưu dạng băm có kèm muối, hệ thống không hề biết mật khẩu dạng rõ của người dùng
Trang 171.4.5 Xử lý lỗi
Các thông báo lỗi được thông báo tới người dùng đều là những thông báo lỗi đã được giản lược, loại bỏ hoàn toàn các thông tin về kĩ thuật Các thông báo lỗi này sẽ là các thông tin chung chỉ phục vụ mục đích thông báo rằng thao tác
đó đã thất bại hoặc là các hướng dẫn người dùng thực hiện lại thao tác theo cách hợp lệ
1.4.6 Kiểm toán
Các hoạt động của người dùng, quản trị viên, kiểm duyệt viên tương tác với hệ thống sẽ được lưu lại vào từng file csv theo từng ngày để thuận tiện cho công việc truy vết sau này Các hoạt động sẽ được ghi lại bao gồm: đăng nhập, đăng xuất, đổi mật khẩu, thay đổi thông tin cá nhân, phê duyệt đồ án, thêm mới
đồ …
1.5 Tìm hiểu ngôn ngữ lập trình sử dụng
1.5.1 Hệ quản trị cơ sở dữ liệu MySQL
MySQL là một hệ quản trị cơ sở dữ liệu (DBMS) mã nguồn mở được sử dụng rộng rãi trên toàn thế giới Được phát triển bởi công ty MySQL AB và sau
đó được Sun Microsystems và Oracle Corporation mua lại, MySQL đã trở thành một trong những DBMS phổ biến nhất trên thế giới
MySQL được xây dựng trên ngôn ngữ lập trình C và C++ và hỗ trợ nhiều
hệ điều hành khác nhau như Windows, Linux, macOS và các hệ điều hành khác MySQL hỗ trợ nhiều loại lưu trữ dữ liệu, bao gồm InnoDB, MyISAM, Memory, CSV và Archive, đáp ứng nhu cầu lưu trữ và truy xuất dữ liệu của các ứng dụng khác nhau
Với khả năng tích hợp với nhiều ngôn ngữ lập trình như PHP, Java, Python
và Javascript, MySQL giúp cho việc tương tác và quản lý dữ liệu trở nên dễ dàng hơn MySQL cung cấp các tính năng an toàn và bảo mật, bao gồm hệ thống kiểm soát truy cập người dùng, mã hóa dữ liệu, chống lại các cuộc tấn công SQL Injection và các cuộc tấn công khác
MySQL có khả năng sao lưu và phục hồi dữ liệu giúp đảm bảo an toàn cho cơ sở dữ liệu Bên cạnh đó, MySQL cũng cung cấp các tính năng quản lý cơ
Trang 18sở dữ liệu như tạo, sửa, xoá và truy vấn dữ liệu Điều này giúp cho các nhà phát triển và quản trị viên cơ sở dữ liệu có thể thực hiện các hoạt động quản lý cơ sở
dữ liệu một cách dễ dàng và hiệu quả
MySQL cũng hỗ trợ các tính năng tiên tiến như đa luồng, phân vùng dữ liệu, index và truy vấn dữ liệu phức tạp Điều này giúp cho việc truy xuất và xử
lý dữ liệu trở nên nhanh chóng và hiệu quả hơn Ngoài ra, MySQL cũng hỗ trợ các tính năng khác như đồng bộ hóa và sao chép dữ liệu, giúp cho việc quản lý
dữ liệu trong môi trường phân tán trở nên dễ dàng hơn
Một trong những tính năng đáng chú ý của NestJS là Dependency Injection, cho phép người dùng sử dụng các đối tượng hoặc module khác trong ứng dụng một cách dễ dàng, giúp cho quá trình phát triển trở nên linh hoạt hơn NestJS cung cấp cho người phát triển nhiều tính năng bảo mật để giúp bảo vệ ứng dụng khỏi các lỗ hổng bảo mật và các cuộc tấn công
• Middleware: NestJS hỗ trợ việc sử dụng Middleware cho phép can thiệp vào quá trình xử lý request, kiểm tra dữ liệu, xác thực, lọc và xử lý dữ liệu trước khi tiến hành xử lý các nghiệp vụ
• Passport: NestJS hỗ trợ việc sử dụng Passport để xác thực người dùng Passport là một middleware xác thực phổ biến cho Node.js, cung cấp các chiến lược xác thực đa dạng như Local, JWT, OAuth,
• Guards: NestJS cung cấp tính năng Guards để kiểm soát quyền truy cập vào các thành phần khác nhau của ứng dụng Guards có thể được sử dụng
để xác định xem một người dùng có được phép truy cập vào một tài nguyên hay không
Trang 19• Encryption: NestJS cung cấp các tính năng mã hóa để bảo vệ dữ liệu và mật khẩu của người dùng Bằng cách sử dụng các thuật toán mã hóa như bcrypt để mã hóa mật khẩu của người dùng để bảo vệ chúng khỏi các cuộc tấn công
• Input Validation: NestJS hỗ trợ việc kiểm tra đầu vào để bảo vệ ứng dụng khỏi các lỗ hổng bảo mật Bằng cách sử dụng class-validator và class-transformer, ta có thể kiểm tra đầu vào của người dùng và chuyển đổi chúng thành đối tượng hợp lệ
• CSRF Protection: NestJS hỗ trợ việc bảo vệ ứng dụng của bạn khỏi cuộc tấn công Cross-Site Request Forgery (CSRF) Bằng cách sử dụng tính năng CSRF của NestJS, ta có thể đảm bảo rằng yêu cầu đến ứng dụng của bạn chỉ được gửi từ các nguồn tin cậy
NestJS còn cung cấp cho người dùng một hệ thống module, cho phép người dùng xây dựng các module độc lập và kết hợp chúng với nhau để tạo thành một ứng dụng hoàn chỉnh Ngoài ra, NestJS cũng tích hợp sẵn các thư viện phổ biến như Express, Fastify, GraphQL, WebSocket, TypeORM, Sequelize, Mongoose, Firebase, AWS, và nhiều thư viện khác để giúp người dùng xây dựng các ứng dụng web và dịch vụ đa dạng
1.5.3 Angular
Angular là một framework phát triển ứng dụng web được xây dựng và duy trì bởi Google Angular được phát triển từ phiên bản AngularJS ban đầu vào năm 2010 Phiên bản đầu tiên của Angular (Angular 2) được phát hành vào năm
2016 và đã trở thành một trong những framework phổ biến nhất hiện nay
Angular được phát triển dựa trên kiến trúc MVVM ViewModel) và sử dụng TypeScript, một ngôn ngữ lập trình mã nguồn mở, phát triển bởi Microsoft TypeScript là một phần mở rộng của JavaScript và cung cấp cho người lập trình nhiều tính năng hơn để phát triển ứng dụng web đáp ứng và
(Model-View-dễ bảo trì hơn
Trang 20Angular cung cấp một loạt các tính năng và công cụ cho phát triển ứng dụng web Các tính năng chính của Angular bao gồm:
• Khả năng phát triển ứng dụng đáp ứng (responsive): Angular cung cấp một loạt các công cụ để phát triển ứng dụng web, giúp ứng dụng hoạt động tốt trên các thiết bị khác nhau
• Khả năng tương tác với API: Angular cung cấp các công cụ để tương tác với các API bằng cách sử dụng HTTP Client và các công cụ khác
• Tính năng bảo mật: Angular cung cấp các tính năng bảo mật như XSS (Cross Site Scripting) và CSRF (Cross Site Request Forgery) để bảo vệ ứng dụng khỏi các cuộc tấn công
• Khả năng tạo các ứng dụng đơn trang (Single Page Applications): Angular cho phép bạn tạo các ứng dụng đơn trang mà không cần tải lại trang, giúp cải thiện trải nghiệm người dùng
Tính năng kiểm thử: Angular cung cấp các công cụ để kiểm thử ứng dụng bằng cách sử dụng các thư viện kiểm thử như Jasmine và Protractor
Trang 21CHƯƠNG 2 PHÂN TÍCH, THIẾT KẾ HỆ THÔNG QUẢN LÝ ĐỒ ÁN 2.1 Các chức năng chính của hệ thống
Hình 2.1 Biểu đồ phân rã chức năng hệ thống
2.1.1 Chức năng quản lý người dùng
Hình 2.2 Biểu đồ phân rã chức năng quản lý người dùng
2.1.2 Chức năng quản lý sinh viên
Hình 2.3 Biểu đồ phân rã chức năng quản lý sinh viên
Hệ thống quản lý đồ án tốt nghiệp
Quản lý
người
dùng
Quản lý sinh viên
Quản lý đồ án
Quản lý đề xuất đồ án
Giảng viên quản lý
Giảng viên phản biện
Hội đồng bảo vệ
Xem, chỉnh sửa thông tin người dùng
Nhập danh sách người dùng qua file
Thay đổi trạng thái người dùng
Quản lý sinh viên
Xem danh sách
sinh viên Thêm sinh viên
Cập nhật thông tin sinh viên
Nhập danh sách sinh viên qua file
Trang 222.1.3 Chức năng quản lý đề tài
Hình 2.4 Biểu đồ phân rã chức năng quản lý đề tài
2.1.4 Chức năng quản lý đề xuất đề tài
Hình 2.5 Biểu đồ phân rã chức năng quản lý đề xuất đề tài
2.1.5 Chức năng quản lý giảng viên quản lý
Hình 2.6 Biểu đồ phân rã chức năng quản lý giảng viên quản lý
Quản lý đề tài
Xem danh
sách đồ án Thêm đồ án
Cập nhật thông tin đồ án
Nhập/ xuất danh sách
đồ án qua file
Đề xuất đồ án
Quản lý đề xuất đề tài
Cập nhật thông tin nhóm Xoá nhóm
Thành lập danh sách
Ngẫu nhiên
Thủ công
Trang 232.1.6 Chức năng quản lý giảng viên phản biện
Hình 2.7 Biểu đồ phân rã chức năng quản lý giảng viên phản biện
2.1.7 Chức năng hội đồng bảo vệ
Hình 2.8 Biểu đồ phân rã chức năng quản lý hội đồng bảo vệ
2.1.8 Chức năng quản lý tài khoản cá nhân
Hình 2.9 Biểu đồ phân rã chức năng quản lý tài khoản cá nhân
Quản lý giảng viên phản
biện
Xem danh sách
nhóm phản biện
Thêm nhóm quản lý
Cập nhật thông tin nhóm Xoá nhóm Thành lập danh sách
Cập nhật thông tin hội đồng
Xuất danh sách hội đồng
Xoá hội đồng Thành lập tổ
hội đồng
Ngẫu nhiên Thủ công
Quản lý tài khoản cá nhân
Đổi mật khẩu Xem/Thay đổi thông tin Thay đổi hình thức xác thực 2 bước
Xem phiên đăng nhập/ nhật ký hoạt động
Trang 242.2 Biểu đồ use case
2.2.1 Các tác nhân của hệ thống
• Khách vãng lai
• Người dùng (giảng viên)
• Quản trị viên
• Kiểm duyệt viên
2.2.2 Biểu đồ use case tổng quát
Hình 2.10 Biểu đồ use case tổng quát
Mô tả:
Trên đây là biểu đồ use case tổng quát của hệ thống, nó thể hiện tất cả các tác nhân có trong hệ thống, tất cả các chức năng trong hệ thống mà từng tác nhân có thể tác động được
Trang 252.2.3 Biểu đồ use case quản lý đề tài
Hình 2.11 Biểu đồ use case quản lý đề tài
Mô tả:
Giảng viên và Quản trị viên có thể sử dụng chức năng Quản lý đề tài sau khi đã đăng nhập vào hệ thống và đều thao tác được các chức năng cơ bản như tra cứu và xem thông tin chi tiết đồ án Giảng viên thông thường có thể đề xuất
đồ án mới cho từng đợt đồ án Giảng viên được phân công quản lý đồ án có thể cập nhật báo cáo của sinh viên trong các đợt báo cáo tiến độ Giảng viên hướng dẫn và giảng viên phản biện có thể thực hiện nhận xét/ đánh giá kết quả nghiên cứu đồ án của sinh viên Đồng thời cũng đưa ra đề nghị cho sinh viên được bảo
vệ đồ án hay không Sau khi sinh viên bảo vệ đồ án thành công, thư ký hội đồng
có thể cập nhật điểm số của đồ án lên hệ thống
Quản trị viên có thể thêm mới, cập nhật thông tin hoặc xoá đồ án Ngoài
ra, quản trị viên cũng có thể thêm mới danh sách đồ án thông qua file Excel
Trang 262.2.4 Biểu đồ use case quản lý đề xuất đề tài
Hình 2.12 Biểu đồ use case quản lý đề xuất đề tài
Mô tả:
Quản trị viên hoặc kiểm duyệt viên đều có thể sử dụng tính năng quản lý
đề xuất đề tài trong hệ thống, họ có thể sử dụng tính năng sau khi đã đăng nhập
Quản trị viên và kiểm duyệt viên có thể tra cứ danh sách đề tài được để xuất, xem thông tin của đồ án và thực hiện phê duyệt hoặc từ chối đề xuất đề tài
Trang 272.2.5 Biểu đồ use case quản lý người dùng
Hình 2.13 Biểu đồ use case quản lý người dùng
Trang 282.2.6 Biểu đồ use case quản lý sinh viên
Hình 2.14 Biểu đồ use case quản lý sinh viên
Trang 292.2.7 Biểu đồ use case quản lý giảng viên quản lý
Hình 2.15 Biểu đồ use case quản lý giảng viên quản lý
Trang 302.2.8 Biểu đồ use case quản lý giảng viên phản biện
Hình 2.16 Biểu đồ use case quản lý giảng viên phản biện
Trang 312.2.9 Biểu đồ use case quản lý hội đồng bảo vệ
Hình 2.17 Biểu đồ use case quản lý hội đồng bảo vệ
Trang 322.3 Biểu đồ hoạt động
2.3.1 Biểu đồ hoạt động chức năng đăng nhập
Hình 2.18 Biểu đồ hoạt động chức năng đăng nhập
Mô tả:
Người dùng nhập tài khoản và mật khẩu để đăng nhập vào hệ thống, ứng dụng sẽ kiểm tra các thông tin người dùng nhập vào, nếu thiếu một trong hai thông tin ứng dụng sẽ hiển thị lỗi, nếu đã đầy đủ thông tin, ứng dụng sẽ chuyển yêu cầu đăng nhập của người dùng tới máy chủ
Tại máy chủ, hệ thống sẽ kiểm tra tài khoản có tồn tại không, tài khoản bị khóa không, và mật khẩu dạng rõ sau khi băm có giống mật khẩu dạng băm được lưu trong CSDL không, nếu một trong các điều khiện đó không được đáp ứng thì máy chủ sẽ trả về thông báo đăng nhập thất bại, nếu các thông tin đều
Trang 33chính xác, hệ thống sẽ tiếp tục kiểm tra tài khoản có bật xác minh hai bước hay không, nếu không hệ thống sẽ lấy từ CSDL các thông tin cần thiết để định danh người dùng, sau đó chuyển thông tin đó thành JWT và Refresh JWT trả ra cho ứng dụng, ứng dụng sẽ lưu lại JWT, Refresh JWT và đính kèm vào tất cả các yều cầu thông tin gửi tới máy chủ sau đó Nếu có, máy chủ sẽ trả về yêu cầu nhập mã xác thực Đồng thời cũng kiểm tra nếu tài khoản sử dụng hình thức xác thực qua email, hệ thống sẽ tạo ngẫu nhiên mã xác thực gồm 6 chữ số và gửi email cho người dùng Người dùng sẽ kiểm tra mã xác thực và nhập vào hệ thống Sau khi nhập mã xác thực, ứng dụng sẽ gửi yêu cầu xác minh tới máy chủ Máy chủ sẽ kiểm tra mã xác minh có chính xác không, nếu không máy chủ
sẽ trả về thông báo mã xác thực không chính xác, nếu đúng hệ thống sẽ chuyển thông tin người dùng thành JWT và Refresh JWT và trả ra cho ứng dụng tương
tự như trường hợp trên
2.3.2 Biểu đồ hoạt động chức năng đăng xuất
Hình 2.19 Biểu đồ hoạt động chức năng đăng xuất
Trang 34Tại máy chủ, hệ thống sẽ kiểm tra JWT có đúng do hệ thống tạo ra không, nếu không sẽ dừng tiến trình tại đó, nếu JWT đó hợp lệ, nó sẽ được lưu vào danh sách các token đã đăng xuất, danh sách đó được lưu tại máy chủ cache để việc truy xuất lại mỗi khi kiểm tra các JWT đính kèm trong các yêu cầu thông tin (HTTP request) khác được xử lý nhanh chóng, những JWT đã lưu tại đây sẽ không thể sử dụng để định danh cho các yêu cầu thông tin khác
2.3.3 Biểu đồ hoạt động chức năng phê duyệt đề tài
Hình 2.20 Biểu đồ hoạt động chức năng phê duyệt đề tài
Mô tả:
Kiểm duyệt viên chọn đề tài muốn xem thông tin yêu cầu, sau đó thực hiện phê duyệt hoặc từ chối đề tài Đối với đề tài bị từ chối, hệ thống sẽ yêu cầu kiểm duyệt viên cho lý do từ chối đề tài, sau khi bị từ chối, đề tài sẽ chuyển sang trạng thái “Từ chối” Đề tài được phê duyệt sẽ chuyển qua danh sách đề tài và có thể cho sinh viên đăng ký nhận đề tài Hệ thống sẽ gửi email thông báo cho người đề xuất sau khi đề tài được phê duyệt hoặc từ chối
Trang 352.3.4 Biểu đồ hoạt động chức năng thành lập danh sách hội đồng
Hình 2.21 Biểu đồ hoạt động chức năng thành lập danh sách hội đồng
Mô tả:
Quản trị viên chọn khoa, học kỳ và yêu cầu hệ thống kiểm tra danh sách các đề tài đủ điều kiện để bảo vệ tương ứng Hệ thống cho phép quản trị viên thành lập danh sách thông qua hai cách thức: Ngẫu nhiên hoặc thủ công Nếu quản trị viên sử dụng hình thức ngẫu nhiên, hệ thống sẽ sắp sếp ngẫu nhiên đề tài đủ điều kiện bảo vệ vào các hội đồng Sau khi hội đồng được thành lập, thư
ký của các hội đồng có thể cập nhật điểm cho từng đề tài thuộc hội đồng vào hệ thống
Trang 362.4 Cơ chế an toàn
2.4.1 Cơ chế xác thực
Hệ thống sử dụng hai cơ chế xác thực là xác thực cơ bản bằng tài khoản
và mật khẩu và cơ chế xác thực bằng JWT - JSON Web Token Sau khi người dùng đăng nhập bằng tài khoản, mật khẩu thành công, hệ thống sẽ cấp cho người dùng một JWT dùng để định danh người dùng (thời gian hiệu lực 15 phút), và một JWT sử dụng để làm mới chuỗi JWT định danh thường được gọi là Refresh Token (thời gian hiệu lực 7 ngày) Trong trường hợp chuỗi JWT định danh hết hiệu lực Hệ thống sẽ tự động sử dụng chuỗi Refresh Token để yêu cầu làm mới JWT định danh Nếu Refresh Token hợp lệ, người dùng sẽ được cấp lại một JWT định danh mới, và người dùng có thể tiếp tục truy cập các chức năng
JWT gồm ba phần chính là Header, Payload, Signature, trong đó Header
là nơi quy định loại mã token, và thuật toán được sử dụng cho token đó Các thông tin này được trình này dưới dạng JSON, sau đó được mã hóa sang base64Url để thuật tiên cho việc đính kèm vào từng gói tin HTTP Phần thứ hai
là Payload, ở đây thường sẽ chứa các claims, thông tin cơ bản về người dùng, các dữ liệu cần thiết khác Các thông tin được lưu vào payload phải thực sự cần thiết, và là những thông tin không nhạy cảm, vì thông tin ở payload có thể dễ dàng giải mã ra dạng bản rõ được, và nếu có quá nhiều thông tin sẽ gây ra khiến dung lượng của token quá lớn, dẫn đến các gói tin có kèm token đều bị chậm đi đáng kể Có ba loại claims: registered, public, và private claims
• Registered claims: Đây là một tập hợp các claims được xác định trước không bắt buộc nhưng được khuyến nghị, để cung cấp một tập hợp các claims hữu ích, có thể tương tác Thường là: iss (nhà phát hành), exp (thời gian hết hạn), sub (chủ đề), aud (audience) và những thứ khác
• Public claims: Chúng có thể được xác định theo ý muốn của những người
sử dụng JWT Nhưng để tránh xung đột, chúng phải được xác định trong IANA JSON Web Token Registry hoặc được định nghĩa là URI chứa namespace chống xung đột
Trang 37• Private claims: Đây là các claims tùy chỉnh được tạo để chia sẻ thông tin giữa các bên đồng ý sử dụng chúng và không phải là các registered hay public claims
Phần cuối cùng của một JWT là signature, nó được tạo ra bằng lấy phần header đã mã hóa, phần payload đã mã hóa, một khóa riêng bí mật, sau đó tát cả những thông tin đó được đưa vào một thuật toán một chiều được quy định ở header Đây cũng chính là phần đảm bảo một JWT không thể bị làm giả, không thể bị sửa đổi thông tin trên đường truyền
Xác thực bằng JWT: sau khi đăng nhập bằng tài khoản và mật khẩu, tất cả các gói tin HTTP sau đó được gửi từ người dùng (browser) gửi tới máy chủ hệ thống (server) sẽ đều được kiểm tra JWT có hợp lệ hay không, nếu không hợp lệ máy chủ sẽ trả lại thông báo HTTP Error 403 Forbidden, tức là người dùng không có quyền gọi tới địa chỉ url này, nếu JWT hợp lệ, máy chủ sẽ trả lại dữ liệu mà người dùng yêu cầu như bình thường
Hình 2.22 Biểu đồ tuần tự luồng xác thực bằng JWT
2.4.2 Cơ chế xác thực hai yếu tố
Để tăng tính bảo mật cho tài khoản người dùng, hệ thống cho phép người dùng kích hoạt tính năng xác thực hai yếu tố Khi sử dụng tính năng này, ngoài việc sử dụng tài khoản và mật khẩu để xác thực, hệ thống còn yêu cầu người
Trang 38dùng sử dụng mã xác thực một lần (OTP) để xác minh bước thứ hai Hệ thống cung cấp hai phương thức nhận mã xác thực một lần là thông qua email hoặc thông qua ứng dụng Authentication
Đối với phương thức nhận mã xác thực thông qua email, sau khi đăng nhập bằng tài khoản và mật khẩu, hệ thống sẽ gửi một mã xác thực được tạo ngẫu nhiên đến địa chỉ email đã đăng ký Mã xác thực này có hiệu lực trong vòng 15 phút Sau khi nhận được email chứa mã xác thực, người dùng sẽ nhập
mã xác thực này vào ứng dụng để hoàn tất xác thực
Đối với phương thức nhận mã xác thực thông qua ứng dụng Authentication (ví dụ: Google Authentication, Authy, …), mã xác thực được tạo thông qua thuật toán mã hoá đối xứng Mã này thường có hiệu lực trong vòng 30 giây và sẽ tự động được cập nhật liên tục để tạo mới Sau khi đăng nhập vào tài khoản, người dùng sẽ phải nhập mã xác thực hiển thị trên ứng dụng xác thực
Hình 2.23 Sơ đồ quá trình kích hoạt xác thực hai bước thông qua ứng dụng
Authentication Người dùng chỉ được phép nhập sai mã xác thực tối đa 3 lần Nếu quá số lần xác thực, hệ thống sẽ chặn người dùng đăng nhập tài khoản trên thiết bị này trong vòng 30 phút
Trang 392.4.3 Cơ chế phân quyền
Hệ thống bao gồm ba nhóm người dùng cơ bản là: quản trị viên, kiểm duyệt viên và giảng viên Ba nhóm người dùng này sẽ có vai trò hoàn toàn khác nhau, hoàn toàn tách biệt với nhau nên hệ thống sẽ phân quyền dựa trên nhóm người dùng và vai trò của từng người dùng Từng vai trò riêng sẽ có quyền tối thiểu riêng biệt tương ứng để phục vụ cho vai trò của họ trong hệ thống Với giảng viên thông thường thì chỉ có quyền sử dụng các chức năng tra cứu, xem thông tin đồ án, … nên họ chỉ có thẻ sử dụng các API phục vụ các chức năng đó, nếu cố tình sử dụng các API khác sẽ nhận được mã lỗi 403 và thông báo không
có quyền Mỗi khi trình duyệt của người dùng gọi đến máy chủ của hệ thống, hệ thống sẽ kiểm tra quyền của người dùng có phù hợp với API hay không, và việc kiểm tra quyền này sẽ được thực hiện với mọi API trong hệ thống (trừ những API công khai – API không kiểm tra JWT)
2.4.4 Cơ chế lọc dữ liệu đầu vào chống một số tấn công phổ biến
Hệ thống quản lý đồ án tốt nghiệp hoạt động theo mô hình client – server Máy khách (client) và máy chủ (server) liên lạc với nhau qua giao thức HTTP, được áp dụng theo một tiêu chuẩn RESTful API Khi đó tất cả gói tin HTTP yêu cầu thêm/chỉnh sửa dữ liệu của người dùng vào cở sở dữ liệu của hệ thống (tra cứu đồ án, thêm mới đồ án, chỉnh sửa thông tin tài khoản…) gửi tới máy chủ hệ thống, trong đó các trường dữ liệu dạng chữ (tên đồ án, người quản lý, sinh viên thực hiện,…) sẽ được đi qua các hàm lọc làm sạch (hàm sanitizeHtml từ thư viện bên thứ ba là sanitize-html) nhằm loại bỏ các thẻ script nhằm phòng tránh việc tấn cống XSS, sau đó sẽ được đi qua hàm lọc chống tấn công SQL injection – hàm escapse của thư viện bên thứ ba là mysql2
Đặc biệt, với các trường dữ liệu dạng số, thời gian, đúng/sai (điểm, ngày sinh…) cũng sẽ được kiểm tra đúng định dạng và thỏa mãn nghiệp vụ của hệ thống (Ví dụ: điểm phải là số nguyên dương và bé hơn 10, ngày sinh phải bé hơn ngày hiện tại…) thì mới được lưu vào cơ sở dữ liệu của hệ thống
Trang 40Ngoài ra việc hiển thị dữ liệu cho người dùng thao tác (được trả ra từ máy chủ hệ thống) được xuất ra trên giao diện sẽ được in ra dưới dạng chuỗi, không
hề đính kèm thêm vào file html hiện tại, nên đó sẽ là một lớp bảo vệ người dùng trước nỗ lực tấn công XSS một lần nữa
2.4.5 Cơ chế mã hoá dữ liệu nhạy cảm
Dữ liệu nhạy cảm như mật khẩu của người dùng sẽ được lưu dưới dạng băm Mật khẩu sẽ được đi qua hàm băm có khóa kèm với muối, đầu ra sẽ lại được băm lại với muối nhiều lần và đầu ra cuối cùng sẽ lại một loạt kí tự ngẫu nhiên sau quá trình băm và được đính kèm số lần băm và thuật toán băm ở đầu
để có thể so sánh lại mật khẩu dạng rõ mỗi lần người dùng đăng nhập vào hệ thống
Cụ thể khi người dùng đăng ký tài khoản/thay đổi mật khẩu, mật khẩu dạng rõ của người dùng gửi tới máy chủ sẽ đi qua hàm hash với đầu vào là mật khẩu dạng rõ của người dùng và số lần băm đệ quy (trong hệ thống sàn chứng khoán là 210 = 1024 lần), sau đó nhận được đầu ra là mật khẩu của người dùng dưới dạng băm (không thể đảo ngược), giá trị mật khẩu đã được băm đó sẽ được lưu vào cơ sở dữ liệu của hệ thống
Hình 2.24 Sơ đồ quá trình băm mật khẩu Đối với dữ liệu nhạy cảm khác như mã bí mật để xác minh khi sử dụng xác thực hai bước bằng ứng dụng Authentication cho mỗi phiên đăng nhập của người dùng thì sẽ được mã hóa bằng thuật toán AES với khóa cố định (được tạo sẵn của hệ thống) Các thông tin này sẽ được mã hóa thành bản mã hóa trước khi