1. Trang chủ
  2. » Luận Văn - Báo Cáo

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ã | Báo cáo đồ án tốt nghiệp

87 29 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề 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ã | Báo cáo đồ án tốt nghiệp
Tác giả Nghiêm Đình Giang
Người hướng dẫn ThS. Dương Xuân Hiệp
Trường học Học viện Kỹ thuật mật mã
Chuyên ngành An toàn thông tin
Thể loại đồ án tốt nghiệp
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 87
Dung lượng 6,22 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

BAN CƠ YẾU CHÍNH PHỦ

Trang 2

BAN 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 3

LỜ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 4

LỜ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 5

MỤ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 6

CHƯƠ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 7

2.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 8

DANH 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 9

DANH 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 10

Hì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 11

DANH 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 12

MỞ ĐẦ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 13

CHƯƠ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 14

Từ 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 15

1.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 16

1.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 17

1.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 18

sở 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 20

Angular 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 21

CHƯƠ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 22

2.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 23

2.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 24

2.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 25

2.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 26

2.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 27

2.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 28

2.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 29

2.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 30

2.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 31

2.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 32

2.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 33

chí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 34

Tạ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 35

2.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 36

2.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 38

dù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 39

2.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 40

Ngoà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

Ngày đăng: 08/08/2023, 11:18

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. TS. Nguyễn Tuấn Anh, KS. Dương Xuân Hiệp (2013), Xây dựng ứng dụng web an toàn, Học viện Kỹ thuật Mật Mã, Hà Nội Sách, tạp chí
Tiêu đề: Xây dựng ứng dụng web an toàn
Tác giả: TS. Nguyễn Tuấn Anh, KS. Dương Xuân Hiệp
Năm: 2013
[4]. Express Team (2017), Security Best Practices for Express in Production, Express. https://expressjs.com/en/advanced/best-practice-security.html Sách, tạp chí
Tiêu đề: Security Best Practices for Express in Production
Tác giả: Express Team
Nhà XB: Express
Năm: 2017
[5]. Wikipedia contributors. (2022), Bcrypt, Wikipedia. https://en.wikipedia.org/wiki/Bcrypt Sách, tạp chí
Tiêu đề: Bcrypt
Tác giả: Wikipedia contributors
Nhà XB: Wikipedia
Năm: 2022
[6]. Tùng Đ. (2021), NodeJS là gì? Tại sao NodeJS lại quan trọng với lập trình web?, Công ty Cổ phần Tino Group. https://wiki.tino.org/nodejs-la-gi/ Sách, tạp chí
Tiêu đề: NodeJS là gì? Tại sao NodeJS lại quan trọng với lập trình web
Tác giả: Tùng Đ
Năm: 2021
[2]. OWASP (2005), A guide to building secure web applications and web service Khác
[3]. TS. Nguyễn Thị Thanh Xuân (2013), Giáo trình thiết kế Web, Cao đẳng nghề Công Nghiệp Hà Nội, Hà Nội Khác

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w