Tải bản đầy đủ (.docx) (29 trang)

(TIỂU LUẬN) đề tài dự án QUẢN lý SINH VIÊN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.29 MB, 29 trang )

BÀI TẬP VỀ NHÀ NHĨM 2
1.
2.
3.
4.
5.

TRẦN QUỐC HỒNG- AT150719
HUỲNH HẢI BẰNG- AT150802
ĐINH TRỌNG HÒA- AT150717
PHẠM NGUYỄN TIẾN ANH- AT150702
LÊ ĐỨC THÌN- AT150746

ĐÈ TÀI: DỰ ÁN QUẢN LÝ SINH VIÊN

Phần 1: Xác định kiểu thực thể, kiểu thuộc tính
1. KHĨA HỌC (mã khóa học, tên khóa học, niên khóa)
2. SINH VIÊN (Mã sinh viên, họ và tên, năm sinh, dân tộc, mã lớp,
ngun qn)
3. CHƯƠNG TRÌNH (Mã chương trình, tên chương trình)
4. MƠN HỌC (Mã mơn học, tên mơn học, mã khoa)
5. KẾT QUẢ (Mã sinh viên, Mã môn học, lần thi, điểm)
6. KẾ HOẠCH ĐÀO TẠO(Mã chương trình, Mã khoa, Mã môn học,
năm học, học kỳ, số tiết lý thuyết, số tiết thực hành, số tín chỉ, tên khoa,
năm thành lập)
7. LỚP (Mã lớp, mã khóa học, mã khoa, mã chương trình,STT,
GVCN, số lượng sinh viên)


Phần 2: Xác định kiểu liên kết


Kiểu thực

Sinh viê
Lớp
Lớp
Lớp

Kết quả

Kết quả

Kế hoạch đà

Kế hoạch đà



Phần 3 : Chuẩn hóa dữ liệu
Chuyển đổi ERD mở rộng về ERD kinh điển


Chuyển đổi ERD kinh điển về ERD hạn chế.


Chuyển đổi ERD hạn chế về MH quan hệ


Phần 4 : Bảng đặc tả dữ liệu
KHOAHOC
STT

1
2

Khó
chín
X

3

SINHVIEN
STT
1
2
3

Khó
chính
X

4
5
6

LOP
STT
1
2
3
4
5

6
7

K
ch


KHDT
STT
1
2
3
4
5
6
7
8

Khóa
chính

KETQUA
STT
1
2

K
ch

CT_KHDT

STT
1
2
3

Kh
chí
X

CHUONGTRINH
STT
1
2

K
ch


MONHOC
STT
1

K
ch

2
3

CT_KETQUA
STT

1
2
3

K

c


Phần 5 Áp dụng mơ hình DAC và MAC vào CSDL
Mơ hình DAC
Create các lớp user HIEUTRUONG,
HIEUPHO, GIAOVIEN, SINHVIEN

mơ hình MAC
Object
Hiệu trưởng
Hiệu phó
Giáo viên
Sinh viên
Subject
KHOAHOC
SINHVIEN
LOP
KHDT
CT_KHDT
CT_KETQUA
KETQUA
CHUONGTRINH
MONHOC



Phần 6: Áp dụng an toàn DBMS
Kiến trúc Woods Hole
Các kiến trúc Woods Hole sử dụng DBMS không tin cậy cùng với một
bộ lọc tin cậy và không quan tâm đến OS có tin cậy hay khơng.

-Phần mềm front ends và DBMS đều khơng tin cậy (Khơng quan
tâm OS có tin cậy hay không)
-Phần mềm untrusted front-end thực hiện các công việc xử lý trước
và sau các câu truy vấn (phân tích, tối ưu hóa, phép chiếu).
-Phần mềm trusted front end (TFE) ở giữa thực thi các chức năng
an toàn và bảo vệ nhiều mức, vì vậy hoạt động như một TCB
(Trusted Computing Base).


Kiến trúc Integrity Lock
-Khố tồn vẹn được đề xuất lần đầu tiên tại Viện nghiên cứu của Lực
lượng Không quân về An toàn cơ sở dữ liệu [AF83], được dùng để kiểm
sốt tính tồn vẹn và sự truy nhập cho cơ sở dữ liệu.
-Kiến trúc Integrity lock đã có trong hệ quản trị thương mại TRUDATA.

Đặc điểm:
-TFE thực thi bảo vệ nhiều mức bằng cách gắn các nhãn an toàn vào các
đối tượng CSDL dưới dạng các tem – Stamps.
-Một tem là một trường đặc biệt của một đối tượng, lưu thơng tin
về nhãn an tồn và các dữ liệu điều khiển liên quan khác.
-Tem là dạng mã hóa của các thông tin trên, sử dụng một kỹ thuật niêm
phong mật mã gọi là Integrity Lock.


Object
Hiệu trưởng
Hiệu phó
Giáo viên
Sinh viên


-TFE có nhiệm vụ tạo và kiểm tra các tem.
-TFE sử dụng mật mã khóa bí mật để tạo tem và giải mã các tem.
Các tem này có thể tạo ra dựa vào tổng kiểm tra (checksum).
-Khóa bí mật chỉ có TFE biết.

•Insert dữ liệu: khi người dùng muốn insert một mục dữ liệu, TFE sẽ
tính:
–Tổng kiểm tra = mức nhạy cảm dữ liệu + dữ liệu.
–Mã hoá tổng kiểm tra này bằng một khố bí mật K, tạo ra tem, và
lưu vào trong CSDL cùng với mục dữ liệu đó (gắn với mục dữ liệu).
•Đưa ra dữ liệu: Khi đưa ra dữ liệu trả cho người dùng, TFE nhận được
dữ liệu từ DBMS khơng tin cậy, nó sẽ kiểm tra tem gắn với mục dữ liệu
xem có chính xác không:


–Giải mã tem gắn với dữ liệu.
–So sánh dữ liệu nhận được với dữ liệu sau khi giải mã tem. Nếu không
khớp chứng tỏ dữ liệu đã bị sửa đổi.
–Lưu ý: nếu dùng hàm băm để tạo tem, thì sau khi DBMS nhận được dữ
liệu và tem tương ứng, nó sẽ băm dữ liệu này ra và so sánh với tem
nhận được xem có trung nhau khơng.

Kiến trúc Kernelized

-Sử dụng một OS tin cậy, có trách nhiệm đối với các truy nhập vật lý vào
dữ liệu (trong CSDL) và có trách nhiệm tuân theo bảo vệ bắt buộc.

-High User (người dùng làm việc ở mức cao) tương tác với một
High DBMS, thông qua một TFE, Low User (người dùng làm việc ở
mức thấp) tương tác với một Low DBMS cũng thơng qua một TFE.
-Sau đó, các u cầu của họ được chuyển cho OS, và OS lấy lại dữ liệu
hợp lệ từ CSDL.


-Đã có trong mẫu thử Sea View và trong hệ quản trị thương mại Oracle.
-Q trình khơi phục: được thực hiện khi OS cần lấy lại dữ liệu được lưu
giữ trên các đối tượng của nó để trả về cho người dùng. Để từ các quan
hệ đơn mức, sinh ra một khung nhìn đa mức chỉ chứa các dữ liệu mà
người dùng yêu cầu,
-Quá trình phân tách: thực hiện chuyển đổi một quan hệ đa mức (đối
tượng CSDL) thành một số quan hệ đơn mức, (chỉ chứa dữ liệu ở
một mức an tồn nào đó), được lưu giữ trong các đối tượng OS.
-Các đối tượng (có các nhãn an tồn giống nhau) của CSDL được lưu
giữ trong các đối tượng của OS tin cậy. Vì vậy, OS tin cậy tiến hành
kiểm sốt an tồn trên các đối tượng lưu giữ này, cần có các q trình
phân tách và khơi phục quan hệ nhiều mức.


Kiến trúc Replicated
-Có trong mẫu thử NRL, nhưng chưa có trong DBMS thương mại nào,
vì nó rất đắt!
-Người dùng mức cao có thể xem và sửa đổi cả dữ liệu mức thấp và
mức cao.
-Để tuân theo giải pháp này cần có các thuật tốn đồng bộ an tồn

để đảm bảo tính tương thích lặp và chi phí lặp cũng rất lớn.
-Dữ liệu mức thấp được lặp trong CSDL.


Phần 7: Áp dụng an toàn ứng dụng vào cơ sở dữ liệu.
VẤN ĐỀ QUẢN LÝ TẢI KHOẢN VÀ MẬT KHẨU NGƯỜI DÙNG
1. Lỗ hổng trong quản lý mật khẩu cơ sở dữ liệu.
Mơ hình an tồn cơ sở dữ liệu dựa trên các tiến trình xác thực và phân
quyền. Mỗi cơ sở dữ liệu duy trì danh sách các định danh của người
dùng, mỗi khi người dùng truy nhập vào cơ sở dữ liệu, tên và mật khẩu
trong danh sách định danh sẽ được sử dụng để xác thực. Sau khi q
trình xác thực đã thành cơng, cơ sở dữ liệu sẽ xác định tập các quyền mà
người dùng được phép thực hiện trên cơ sở dữ liệu.
Vì vậy, một điều hiển nhiên là để đáp ứng được yêu cầu mơ hình an tồn
đặt ra, tên và người dùng phải được quản lý một cách an toàn, nếu điều
này khơng được thực hiện tốt thì tồn bộ mơ hình sẽ trở nên vô nghĩa .

Quy ước đặt tên
-

Viết hoa chữ cái đầu

-

Loại bỏ dấu, ký tự đặc biệt như: ‘:’, ‘--‘, ‘/’, ...

-

Đặt theo dạng số ít


Để bảo vệ thì trước tiên chúng ta phải có một mật khẩu hiệu quả .Mật
khẩu được xem là một mật khẩu hiệu quả thì rất khó xâm phạm, thường
có các đặc điểm sau:
-

Thay đổi mật khẩu thường xuyên, ít nhất sáu tháng mỗi lần.

- Tránh những từ liên quan đến bản thân, chẳng hạn như tên, ngày tháng
năm sinh, nơi sinh, địa chỉ.
- Chứa ít nhất 8 kí tự, kết hợp các kí tự số, các kí tự chữ (chữ hoa và chữ
thường) và các kí đặc biệt, tránh sử dụng các từ chung (tên, chữ của
người khác mà có thể được tìm thấy trong từ điển)


Lỗ hổng này đề cập đến vấn đề tên và mật khẩu của cơ sở dữ liệu được
sử dụng và lưu trữ khơng an tồn. Có nhiều ngun nhân dẫn đến lỗ
hổng này, trong đó một ngun nhân chính là tên và mật khẩu được lưu
trữ dưới dạng rõ trong tệp cấu hình. Dẫn đến kẻ tấn cơng có thể lợi dụng
để làm hại đến các tài nguyên của máy chủ ứng dụng, hoặc có thể đạt
được việc truy nhập vào cơ sở dữ liệu một cách hợp pháp. Đây là một lỗ
hổng bảo mật nghiêm trọng vì định danh được sử dụng bằng ứng dụng
để truy nhập vào trong cơ sở dữ liệu thường có tồn quyền đối với lược
đồ cơ sở dữ liệu thậm trí là tồn quyền với cơ sở dữ liệu.
Tên nhân viên
Trần Quốc
Hồng
Đinh Trọng Hịa
Phạm Nguyễn
Tiến Anh
Huỳnh Hải

Bằng
Lê Đức Thìn
Để bảo mật tài khoản của người dùng thì ta dùng mật khẩu mã hóa
(encrypted_password)
ở đây dùng mã hoá md5 + salt được tạo ngẫu nhiên
Password được mã hố như sau hash (password +salt)
Tên nhân
viên
Trần
Quốc
Hồng
Đinh
Trọng
Hịa

Ch
vụ
Hi
trư

Hi
ph


Phạm
Nguyễn
Tiến Anh
Huỳnh
Hải Bằng
Lê Đức

Thìn
1.2 KIỂM SỐT TRUY CẬP VÀO CƠ SỞ DỮ LIỆU.
Bước đầu tiên trong việc giải quyết các lỗ hổng bảo mật về mật khẩu
CSDL là giám sát xem ai đang truy nhập vào dữ liệu. Bắt đầu bằng việc
tạo báo cáo về các tải khoản nào đang hoạt động, tài khoản đó đang
dùng địa chỉ IP nào kết nối tới CSDL, và ứng dụng nào được dùng để
truy nhập vào CSDL.
Một tùy chọn thêm để tăng cường an tồn là sử dụng tường lửa, như
trong hình 4.3, tại đây có hai lựa chọn: (1) sử dụng tường lửa tiêu chuẩn,
cho phép thực hiện kiểm soát truy nhập dựa trên IP và Port; (2) sử dụng
tường lửa SQL, cho phép việc xây dựng các tập luật không chỉ dựa trên
IP mà còn dựa trên tên truy nhập, ứng dụng truy nhập, đối tượng CSDL
được truy nhập. Nó cũng cho phép xác định chính xác tài khoản nào hay
ứng dụng nào, máy tính nào được phép truy nhập vào CSDL.
Ngồi ra chúng ta có thể kết hợp sử dụng thêm một phần mềm cảnh báo
thời gian thực khi có bất kỳ vi phạm an ninh nào. Kẻ tấn công có thể cố
gắng kết nối tới CSDL từ máy tính của nó, và khi khơng thể kết nối được
do bị tường lửa SQL chặn thì nó có thể đốn rằng địa chỉ IP của đang bị
chặn(đang có một thiết bị giám sát an ninh tầng 3), nó có thể quay ra thực
hiện tấn công từ các máy chủ ứng dụng, hoặc có thể giả mạo địa chỉ IP của
máy chủ ứng dụng thành địa chỉ IP của máy mình và tiếp tục tấn công,

Hi
ph

Gi
vi
Si
vi



q trình lọc có thể mất thêm thời gian, tuy nhiên nếu việc lọc được thực
hiện sử dụng phần mềm cảnh báo thời gian thực thì có thể chặn cuộc tấn
cơng từ sớm, trước khi kẻ tấn cơng tìm mọi cách để vượt qua các hàng
rào bảo vệ.

Tên nhân viên
Trần Quốc Hồng
Đinh Trọng Hịa
Phạm Nguyễn Tiến
Anh
Huỳnh Hải Bằng
Lê Đức Thìn
Sử dụng Firewall bằng cách kiểm tra các packet đến và so sánh chúng
với một bộ rules. Nếu packet đáp ứng các tiêu chuẩn được quy định bởi
các rules, thì Firewall sẽ chuyển packet đến TCP / IP protocol để xử lý
bổ sung. Nếu packet không đáp ứng các tiêu chuẩn được chỉ định bởi
các rules, thì Firewall sẽ loại bỏ packet đó. Ngồi ra, logging được bật,
firewall sẽ tạo một mục nhập trong file logging của Firewall.


Danh sách lưu lượng được cho phép theo một trong những cách sau:
Tự động: Khi Firewall được kích hoạt, Firewall sẽ tạo một danh sách để
phản hồi “allowed” (cho phép). Phản hồi này được xem là solicited
traffic và khơng có gì cần phải cấu hình.
Theo cách thủ cơng: Admin cấu hình các rules cho Firewall. Điều này
Cho phép truy cập vào các chương trình hoặc các port được chỉ định trên
máy tính của bạn. Trong trường hợp này, máy tính chấp nhận unsolicited
traffic khi hoạt động như một server, một listener, hoặc một peer. Đây là
loại cấu hình phải được hoàn thành để kết nối với SQL Server.

XÁO TRỘN MÃ ỨNG DỤNG.
Phân tích điểm yếu mã nguồn và giả mã
Trong nhiều môi trường ứng dụng hiện đại ngày nay, một số mã được đặt trong
định dạng mã nguồn hoặc trong định dạng mà có thể dễ dàng được sử dụng cũng như
dễ dàng lấy được. Và từ đó kẻ tấn cơng có thể có được rất nhiều thơng tin về các hoạt
động bên trong của ứng dụng (đây cũng là một vi phạm về quyền sở hữu trí tuệ,
nhưng khơng được đề cập đến trong chương này). Một kẻ tấn cơng có thể tìm hiểu các
cách thức kết nối trong ứng dụng với CSDL, hay làm thế nào tên tài khoản được mã
hóa, cũng như các câu truy vấn tới CSDL mà ứng dụng sử dụng là gì. Mã nguồn cũng
có thể bị kẻ tấn cơng phân tích để tìm ra những lỗ hổng trong ứng dụng.
Một vấn đề khác về mã bảo vệ liên quan đến mã giả hoặc định dạng trung gian.
Cả hai môi trường Java và Microsft .Net đểu dựa trên một máy ảo (VM) mẫu, trong
đó mã nguồn được biên dịch thành một định dạng trung gian (hay cịn gọi là mã giả)
mà sau đó được sử dụng bởi các máy ảo để chạy ứng dụng. Định dạng trung gian này
bao gồm các hướng dẫn, chỉ thị cụ thể đối với máy ảo, máy ảo thực hiện những chỉ thị
này và đôi khi biên dịch chúng thành mã máy (code on-the-fly / just in time complie).
Lợi thế của kiến trúc này là tính di động và khả năng tương tác tốt. Ví dụ trong mơi
trường Java nó cho phép một chương trình chạy trên một hệ điều hành có cài máy ảo
Java (JVM - java virtual machine) mà không cần phải sửa đổi hay biên dịch lại code.
Các lớp (class) trong Java được biên dịch thành các file .class chứa các bytecode, chỉ
thị, điều khiển máy ảo java (JVM) . Nền tảng .Net thực hiện các


tương tác với Microsoft, trong đó nhiều ngơn ngữ lập trình có thể tương tác tốt và chia
sẻ các tập lệnh dễ dàng bởi tất cả đều được biên dịch theo một định dạng chung trên
một cơ sở chung. Cơ sở chung này được gọi là Common Library Runtime(CLR), và
các định dạng trung gian trong đó tất cả các chương trình được biên dịch được gọi là
Common Intermediate Language(CIL). Định dạng CIL bao gồm siêu dữ liệu
(metadata) có thể đọc hiểu code và cung cấp nhiều thơng tin có giá trị cho hacker.


Trong khi máy ảo và mã giả rất thuận tiện cho việc phát triển và đơn giản hóa việc
triển khai phần mềm, thì chính nó cũng là phần dễ bị tổn thương. Mã giả gồm
những tập lệnh chỉ thị ở mức máy ảo, và máy ảo chạy như một phần mềm thơng
dịch, nó chuyển dịch mã nguồn của một ngơn ngữ lập trình thành các lệnh cho
máy tính thực hiện tính tốn, bởi vì những tập lệnh này rất thông dụng, kẻ tấn công
đã xây dựng các chương trình gọi là phần mềm ăn cắp mã giả. Các chương trình
này đọc biên soạn mã giả và tạo ra mã nguồn. Mã nguồn này gần chính xác như
mã gốc.
Khắc phục vấn đề tấn công khai thác lỗ hổng dựa trên phân tích mã nguồn.

để hạn chế các tấn cơng khai thác lỗ hổng dựa trên phân tích mã nguồn
là sử dụng các kỹ thuật mã hóa ứng dụng gồm:
-Mã hóa giao diện:
Bao gồm làm xáo trộn các nhận dạng, loại bỏ các chú thích câu lệnh, và
đảo vị trí các method.
-Mã hóa dữ liệu:
Ảnh hưởng tới cấu trúc dữ liệu và mã hóa dữ liệu. Ví dụ: một mảng hai
chiều có thể được chuyển thành mảng một chiều và trải rộng.
int i=1;
while (i < 100) {
.. arr[i] ..
i++
}
Đoạn mã trên có thể được chuyển về dạng như sau:


..
int i = 7;
..
int j = i + 4;

while (j < 8003) {
.. arr[(j-3)/(i+1)] ..;
j += (i+1);
}
Kiểm soát mã mã hóa bao gồm các kỹ thuật sắp xếp lại, hay bổ
sung các câu lệnh không liên quan.
- Thêm đoạn mã giúp chống lại việc biên dịch ngược. Ví dụ, trong
nhiều năm, ứng dụng phổ biến nhất dùng cho việc dịch ngược mã
Java là phần mềm freeware tên là Mocha. Một trình mã hóa giả
được tạo ra gọi là HoseMocha đã gắn thêm các lệnh giả chống lại
việc dịch ngược, mà khơng làm ảnh hưởng đến việc thực thi
chương trình.
Cú pháp mã hóa:
AES_ENCRYPT(chuoi_can_ma_hoa, KEY_SECRET);
Cú pháp giải mã:
AES_DECRYPT(ten_column, KEY_SECRET);
KEY_SECRET ở đây là một khóa dùng để mã hóa và giải mã, chúng ta
cần tránh để lộ khóa này.
Ví dụ:
INSERT into SinhVien (MaSV, HoTenSV) VALUES (AES_ENCRYPT('SV001',
'secret'), AES_ENCRYPT('Tran Quoc Hoang', 'secret'));


TẤN CÔNG SQL INJECTION.
SQL Injection là một kỹ thuật lợi dụng những lỗ hổng về câu truy vấn
lấy dữ liệu của những website khơng an tồn trên web, đây là một kỹ
thuật tấn công rất phổ biến và sự thành cơng của nó cũng tương đối cao.
Có thể gây ra những thiệt hại khổng lồ. Với SQL Injection, hacker có thể
truy cập một phần hoặc toàn bộ dữ liệu trong hệ thống.
Lỗ hổng này rất nổi tiếng, từ developer đến hacker gần như ai cũng biết.

Ngồi ra, cịn có 1 số tool tấn công SQL Injection cho dân “ngoại đạo”,
những người khơng biết gì về lập trình.
Dễ tấn cơng, phổ biến, gây ra hậu quả nghiêm trọng, đó là lý dó Inject
(Khơng chỉ SQL mà OS và LDAP) nằm chễm chễ ở vị trí đầu bảng trong
top 10 lỗ hỗng bảo mật của OWASP.
Cơ chế SQL Injection vô cùng đơn giản. Ta thường sử dụng câu lệnh
SQL để truy cập dữ liệu. Giả sử, muốn tìm đăng nhập user, ta thường
viết code như sau:
var username = request.username; // Tqh001
var password = request.password; // Tqh123@123
var sql = "SELECT * FROM Users WHERE Username = '" +
username + "' AND Password = '" + password + "'";
/ SELECT * FROM Users WHERE Username = ' Tqh001'
AND Password = ' Tqh123@123'
Đoạn code trên đọc thông tin nhập vào từ user và cộng chuỗi để thành
câu lệnh SQL. Để thực hiện tấn công, Hacker có thể thay đổi thơng
tin nhập vào, từ đó thay đổi câu lệnh SQL .
var password = request.password; // ' OR '' = ''
var sql = "SELECT * FROM Users WHERE Username = '" +
username + "' AND Password = '" + password + "'";


/ SELECT * FROM Users WHERE Username = ' Tqh001'
AND Password = '' OR '' = ''
Hacker có thể thơng qua SQL Injection để dị tìm cấu trúc dữ liệu (Gồm
những table nào, có những column gì), sau đó bắt đầu khai thác dữ liệu
bằng cách sử dụng các câu lệnh như UNION, SELECT TOP 1…
Cách phòng chống SQL Injection:
Hiện nay có một số hướng dẫn tốt để tránh lỗi SQL injection cho các nhà
phát triển ứng dụng chẳng hạn như:

• Tất cả các dữ liệu được nhập vào bởi người dùng phải được lọc,
loại bỏ tất cả các ký tự hoặc các chuỗi không phải là một phần của
biểu thức đầu vào, và tất cả các trường nhập vào đều phải được xác
nhận.
• Các lệnh SQL được sử dụng để truy nhập cơ sử dữ liệu từ mã lệnh
trong phần mềm ứng dụng không được tạo ra bằng cách sử dụng
các chuỗi ghép nối.
• Các tham số có kiểu mạnh (thường kết hợp với các Store
procedure) phải được sử dụng bất kỳ nơi nào có thể.
• Việc đăng nhập vào ứng dụng phải sử dụng một Store procedure
chức năng được thực hiện với một Store procedure xác nhận tốt.
• Dữ liệu nhập vào của tất cả người dùng phải được cho vào trong
dấu ngoặc kép, kể cả dữ liệu số.


×