Phần mềm quản lý hệ thống bảng điểm gốc
BỘ GIÁO DỤC VÀO ĐÀO TẠO TRƯỜNG ĐẠI HỌC NÔNG LÂM TP HCM KHOA CÔNG NGHỆ THÔNG TIN ĐỀ TÀI NGHIÊN CỨU KHOA HỌC SINH VIÊN PHẦN MỀM QUẢN LÝ HỆ THỐNG BẢNG ĐIỂM GỐC Giáo viên hướng dẫn: ThS Lê Văn Phận TP.HỒ CHÍ MINH MỤC LỤC oOo Trang I.TÓM TẮT KẾT QUẢ NGHIÊN CỨU ĐỀ TÀI II.ĐẶT VẤN ĐỀ 1.Đối với phòng đào tạo: 2.Đối với sinh viên: III.GIẢI QUYẾT VẤN ĐỀ 1.Lưu trữ tìm kiếm: .2 Xác định mục tiêu lưu trữ: Ví dụ mẫu: 2.Sử dụng ngôn ngữ PHP & MySQL để giải vấn đề quản lý: 2.1.MySQL 2.1.2.Thiết kế sở liệu sơ bộ: 2.1.2.Thiết kế sở liệu sơ bộ: .4 2.1.3.Thiết kế sở liệu ngôn ngữ MySQL: 2.1.3.Thiết kế sở liệu ngôn ngữ MySQL: 2.1.4.Hiện thực ngôn ngữ MySQL: 2.1.4.Hiện thực ngôn ngữ MySQL: .6 2.2.PHP: .7 2.2.1.PHP gì? 2.2.2.Các giải thuật áp dụng để giải yêu cầu: .7 2.2.2.1.Chuyển từ có dấu thành không dấu: .7 2.2.2.1.Chuyển từ có dấu thành không dấu: 2.2.2.2.Phân trang PHP: 2.2.2.2.Phân trang PHP: 2.2.2.3.Quản lý tập tin máy chủ: .11 2.2.2.3.Quản lý tập tin máy chủ: 11 3.Sử dụng Google Docs giúp xem file PDF trực tuyến: 12 3.1.Giới thiệu Google Docs: 12 3.2.Lý sử dụng Google Docs: 13 3.3.Tiện ích Google Docs quản lý bảng điểm gốc: .13 4.An toàn bảo mật: 13 4.1.Xác định nguy cơ: 14 4.2.An toàn với SQL Injection: 14 4.2.1.SQL Injection gì? 14 4.2.1.SQL Injection gì? 14 4.2.2.Xác định điểm có nguy bị công SQL Injection: .15 4.2.2.Xác định điểm có nguy bị công SQL Injection: 15 4.2.3.Phương pháp xử lý: .15 4.2.3.Phương pháp xử lý: 15 4.3.An toàn với File Upload: 16 4.3.1.File Upload gì? 16 4.3.1.File Upload gì? 16 4.3.2.Xác định điểm có nguy bị công File Upload: 16 4.3.2.Xác định điểm có nguy bị công File Upload: 16 4.3.3.Phương pháp công xử lý: 16 4.3.3.Phương pháp công xử lý: 16 4.4.An toàn với XSS Attack: 20 4.4.1.XSS Attack gì? 20 4.4.1.XSS Attack gì? 20 4.4.2.Xác định điểm có nguy bị công XSS Attack: 20 4.4.2.Xác định điểm có nguy bị công XSS Attack: 20 4.4.3.Phương pháp xử lý: .20 4.4.3.Phương pháp xử lý: 20 IV.KẾT LUẬN – ĐỀ NGHỊ 21 1.Kết luận: .21 2.Đề nghị: 21 I TÓM TẮT KẾT QUẢ NGHIÊN CỨU ĐỀ TÀI Đề tài hoàn thành 90% kết ban đầu đặt Tuy có nhiều mặt hạn chế chưa thử nghiệm thức máy chủ trường; chưa có khảo sát yêu cầu đặt từ phía sinh viên – người hưởng lợi ích từ kết đề tài Nhưng từ đánh giá chủ quan, ứng dụng đề tài phục vụ cho 1000 lượt truy cập sinh viên ngày; tổng quan, đề tài đáp ứng nhu cầu tìm kiếm sinh viên, giúp sinh viên có kết điểm nhanh xác nhất, giúp phòng đào tạo quản lý hệ thống bảng điểm gốc Bên cạnh đó, đề tài tập trung vào quản lý bảng điểm theo định hướng hệ tín nên giúp cho hệ thống với định hướng áp dụng tín vào trường Đại học Bộ Giáo dục Đào tạo Đề tài xây dựng hệ thống mã nguồn mở nên đáp ứng với yêu cầu ứng dụng mã nguồn mở vào hệ thống quản lý Nhà nước Chính phủ chi đạo Chi phí xây dựng máy chủ hệ thống mã nguồn mở không cao, không tốn chi phí quyền, Nhà trường hoàn toàn phát triển thêm đề tài cho phù hợp với nhu cầu mở rộng hay thực tế nhà trường Đề tài phù hợp để phát triển với tất trường Đại học Cao đẳng phạm vi nước II ĐẶT VẤN ĐỀ Đối với phòng đào tạo: Sau đợt kiểm tra kết thúc học kỳ, số lượng bảng điểm gốc từ giáo viên gởi cho phòng đào tạo lớn Ước tính thực tế gần 300 bảng điểm cho học kỳ tính riêng cho hệ tín Bên cạnh đó, thực tế nhà trường song song hệ niên chế tín nên việc quản lý khó khăn Mặt khác, phần mềm quản lý bên thường phải tốn chi phí quyền nhiều, phải phụ thuộc vào số hệ điều hành định gây khó khăn việc quản lý kinh phí nhà trường Vì vậy, phòng đào tạo cần phương pháp quản lý cách khoa học Có thể quản lý, tìm kiếm lưu trữ hạn chế thấp mặt kinh phí Đối với sinh viên: Nhu cầu thực tế sinh viên muốn tra cứu bảng điểm gốc nhanh chóng, dễ dàng phù hợp với sinh viên không chuyên công nghệ thông tin Với cách quản lý nay, sinh viên muốn tìm kiếm bảng điểm gốc phải nhớ mã môn học đăng ký, vào trang web phòng đào tạo để tìm đường dẫn chứa file bảng điểm gốc, số bạn không chuyên tin học khó khăn việc xem file PDF máy tính chưa cài đặt chương trình hỗ trợ Một số sinh viên thiếu ý thức xé bảng điểm dán Khoa, làm khó khăn cho bạn lại Điểm trang web có tính chất tham khảo, sở chắn Do vậy, phần mềm quản lý bảng điểm gốc giúp sinh viên dễ dàng tìm kiếm bảng điểm gốc mình, có sở chắn điểm số có vấn đề phát sinh Giúp sinh viên dễ dàng xem bảng điểm mà không cần biết nhiều tin học III GIẢI QUYẾT VẤN ĐỀ Lưu trữ tìm kiếm: Xác định mục tiêu lưu trữ: Lưu trữ thông tin bảng điểm gốc nhằm dễ dàng quản lý tìm kiếm Ví dụ mẫu: Hình Một bảng điểm gốc mẫu 1.1 Xác định thông tin cần lưu trữ: Một bảng điểm gốc có nhiều thông tin cần lưu trữ điểm sinh viên, môn học, mã môn học, v.v… đứng phía quản lý Ta quản lý thông tin bật chung bảng điểm gốc Tiêu chí phải đạt yêu cầu sau: + Dễ quản lý: nhằm xác định thông tin cần tìm + Dễ nhớ: phục vụ cho công tác tìm kiếm Chẳng hạn: sinh viên tìm kiếm bảng điểm không nhớ tên môn học nhớ giáo viên dạy môn + Mẫu chung: nhằm mục đích quản lý theo chuẩn chung thống với bảng điểm có Từ tiêu chí ta xác định thông tin cần lưu trữ sau: Hình Thông tin lưu trữ cho bảng điểm gốc • Mã môn học: dùng để xác định xác môn học, phục vụ tốt cho công tác chuyên môn • Tên môn học: dùng việc tìm kiếm cho dễ nhớ • Nhóm thi: dùng việc lưu trữ, hiển thị kết • GV chấm thi: dùng việc quản lý chuyên môn, phục vụ cho tìm kiếm • GV coi thi: dùng việc quản lý chuyên môn, phục vụ cho tìm kiếm • Học kỳ: Xác định học kỳ học sinh viên Sử dụng ngôn ngữ PHP & MySQL để giải vấn đề quản lý: 2.1 MySQL 2.1.1 MySQL gì? MySQL hệ quản trị sở liệu mã nguồn mở phổ biến giới nhà phát triển ưa chuộng trình phát triển ứng dụng Vì MySQL sở liệu tốc độ cao, ổn định dễ sử dụng, hoạt động nhiều hệ điều hành cung cấp hệ thống lớn hàm tiện ích mạnh Với tốc độ tính bảo mật cao, MySQL thích hợp cho ứng dụng có truy cập CSDL Internet MySQL miễn phí hoàn toàn Nó có nhiều phiên cho hệ điều hành khác nhau: phiên Win32 cho hệ điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS, 2.1.2 Thiết kế sở liệu sơ bộ: Dựa vào thông tin cần lưu trữ Ta thiết kế CSDL với bảng chứa thông tin bảng điểm gốc cần lưu trữ sau: • ID: mã cho bảng điểm cần lưu trữ Mục giúp xác định cách nhanh xác cho bảng điểm hệ thống • TenFile: tên file bảng điểm Giúp hệ thống lấy xác tên file bảng điểm lưu trữ • LoaiFile: loại file bảng điểm Hệ thống đưa vào ứng dụng hỗ trợ nhiều loại file thông dụng PDF, Excel, Word, Image Giúp cho phòng đào tạo có nhiều lựa chọn công tác lưu trữ • DuongDan: đường dẫn xác file Giúp xác định đường dẫn file lưu trữ máy chủ, giúp cho việc hiển thị thông tin từ file xác • NgayNhap: ngày nhập thông tin bảng điểm gốc Giúp cho công tác quản lý dễ dàng, xác việc hiển thị kết tìm kiếm xếp theo thời gian nhập bảng điểm gần nhất, sinh viên tìm bảng điểm cách dễ dàng • MaMH: mã môn học bảng điểm Mỗi môn học có mã môn học riêng giúp xác định xác môn học, phục vụ cho công tác chuyên môn dễ dàng, nhanh chóng thuận tiện • Lop: lớp học môn học Nếu theo hệ tín tên môn học, theo hệ niên chế mã lớp học • Nhom: xác định nhóm thi Giúp cho sinh viên tìm kiếm xác bảng điểm cần tìm • LanThi: xác định lần thi sinh viên hiển thị kết tìm kiếm • GVCham: tên giáo viên chấm thi • GVCoithi: tên giáo viên coi thi • NguoiCapNhat: người cập nhật bảng điểm gốc • SoLanXem: xác định số lần xem bảng điểm gốc Phục vụ cho công tác thống kê • F_GVCham: tên giáo viên chấm thi không bỏ dấu • F_GVCoiThi: tên giáo viên coi thi không bỏ dấu • HocKi: học kì bảng điểm 2.1.3 Thiết kế sở liệu ngôn ngữ MySQL: Dựa vào thiết kế sở liệu sơ bộ, ta chuyển sang thiết kế ngôn ngữ MySQL để thực máy tính • ID: trường ID mang kiểu int, trường bắt buộc phải nhập liệu tự động tăng giá trị sau lần thêm trường Trường ID khóa sở liệu • TenFile: trường TenFile mang kiểu varchar với giới hạn 100 ký tự, trường bắt buộc phải nhập liệu • LoaiFile: trường LoaiFile mang kiểu varchar với giới hạn ký tự, trường bắt buộc phải nhập liệu • DuongDan: trường DuongDan mang kiểu varchar với giới hạn 200 ký tự, trường bắt buộc phải nhập liệu • NgayNhap: trường NgayNhap kiểu TimeStamp, mặc định thời gian • MaMH: trường MaMH mang kiểu varchar với giới hạn 10 ký tự, trường bắt buộc phải nhập liệu • Lop: trường Lop mang kiểu varchar với giới hạn 50 ký tự, trường bắt buộc phải nhập liệu • Nhom: trường Nhom mang kiểu int, trường bắt buộc phải nhập liệu • LanThi: trường LanThi mang kiểu int, trường bắt buộc phải nhập liệu • Gvcham: trường Gvcham mang kiểu varchar với giới hạn 50 ký tự, trường bắt buộc phải nhập liệu • Gvcoithi: trường Gvcoithi mang kiểu varchar với giới hạn 50 ký tự, trường bắt buộc phải nhập liệu • NguoiCapNhat: trường NguoiCapNhat mang kiểu varchar với giới hạn 50 ký tự, trường bắt buộc phải nhập liệu • Solanxem: trường Solanxem mang kiểu int, mặc định ban đầu • f_gvcham: trường f_gvcham mang kiểu varchar với giới hạn 50 ký tự, trường bắt buộc phải nhập liệu • f_gvcoithi: trường f_gvcoithi mang kiểu varchar với giới hạn 50 ký tự, trường bắt buộc phải nhập liệu • Hocki: trường Hocki mang kiểu varchar với giới hạn ký tự, trường bắt buộc phải nhập liệu 2.1.4 Hiện thực ngôn ngữ MySQL: CREATE TABLE `data` ( `id` int(11) NOT NULL auto_increment, `tenfile` varchar(200) NOT NULL, `loaifile` varchar(3) NOT NULL, return str_replace($coDau,$khongDau,$str); } Phương thức lấy ký tự có dấu cho thành mảng Sau cho thay vị trí thành ký tự không dấu 2.2.2.2 Phân trang PHP: Khi người dùng tìm kiếm kết kết nhiều xảy tình trạng nhiều kết trang gây loãng thông tin gây rối mắt Do đó, yêu cầu chương trình phải phân nhiều trang khác nhằm phù hợp với yêu cầu đặt Để xây dựng giải thuật, cần có hướng đi, suy nghĩ từ ban đầu Trước tiên, ta phải xác định xem trang nên hiển thị kết cho phù hợp, thông thường 10 kết Sau đó, từ liệu lấy từ sở liệu, ta lấy 10 kết ra, giải thuật để lấy 10 kết trang Nếu trang trang thứ n liệu cần lấy hàng thứ (n – 1) * 10 lấy liên tiếp 10 dòng kết trả sở liệu Hiện thực: // Số hàng trang $rowsPerPage = 10; // Tính toán số trang $hienThiSoTrang = ""; $totalRows = mysql_num_rows($results); if($totalRows % $rowsPerPage == 0) $totalPages = (int)($totalRows/ $rowsPerPage); else $totalPages = (int)($totalRows/ $rowsPerPage+1); // Lấy trang $trang = $_GET['trang']; if($trang=="" || $trang $totalPages) $currentPage = 1; else $currentPage = $trang; // Để lấy hàng số trang trừ 1, sau nhân cho số hàng trang cộng thêm $currentRow = (($currentPage - 1) * $rowsPerPage) + 1; 10 $hienThiSoTrang = "Trang : $currentPage/ $totalPages"; // Lấy URI $uri = $_SERVER['REQUEST_URI']; // Bỏ tham số "trang = " $uri = str_replace("&trang=$currentPage", "", $uri); // List trang $listPages = "Đến trang: "; // Nếu trang thêm link "Trang trước" if($currentPage != 1) { $pre_page = $currentPage - 1; $listPages = " Trước "; } // Tạo link cho danh sách trang for($i = 1; $i 0) { $low=$currentRow; $currentRow=1; echo '{Nội dung hiển thị}'; // Lấy đường dẫn $url = $_SERVER['HTTP_HOST']; $uri = $_SERVER['REQUEST_URI']; $getCurrFolder = substr($uri, 0, strrpos($uri, "/")); // In dòng trang while(($thisRow = mysql_fetch_array($results)) && ($currentRow$low) { $id = $thisRow['id']; $mamh = $thisRow['mamh']; $lop = $thisRow['lop']; $nhom = $thisRow['nhom']; $gvchamthi = 11 stripcslashes($thisRow['gvcham']); $gvcoithi = stripcslashes($thisRow['gvcoithi']); $hocki = $thisRow['hocki']; $duongdan = $thisRow['duongdan']; $urlBookMark = "http://" $url.$getCurrFolder.$duongdan; echo "{Nội dung hiển thị}”; } } echo ''; echo ''; echo 'Tổng số kết tìm thấy: '; echo $totalRows; echo ""; echo $hienThiSoTrang; echo ""; } else echo quả"; "Không có kết 2.2.2.3 Quản lý tập tin máy chủ: Tập tin bảng điểm gốc quản lý thông tin sở liệu mà quản lý máy chủ Giúp cho người quản trị máy chủ dễ dàng nhận biết hiểu thông tin bảng điểm gốc, không cần tốn nhiều thời gian để tra cứu cần thiết Tập tin bảng điểm gốc lưu máy chủ theo dạng: /data/học_kì/mã_môn_học-lớp_(không_có_dấu)-nhóm-lần_thihọc_kì-GV_Chấm_(không_có_dấu)-GV_CoiThi_(không_có_dấu)Ngày_nhập.đuôi_file Như vậy, thông tin bảng điểm gốc lưu trữ đầy đủ tên bảng điểm Người quản trị tìm kiếm tập tin máy chủ không cần tra cứu thông tin sở liệu mà tìm kiếm trực tiếp máy chủ if (!file_exists($upload_dir)) { mkdir($upload_dir); } if ($_FILES['userfile']) { $temp_name = $_FILES['userfile']['tmp_name']; $file_name = "$maMH - " khongdau($lop) " $nhom - $lanThi - $hocki - $f_gvCham - $f_gvCoiThi - " date("d-m-Y"); $file_name = checkUpload($file_name); $file_type = $_FILES['userfile']['type']; $file_size = $_FILES['userfile']['size']; $result = $_FILES['userfile']['error']; 12 $file_ext = end(explode(".", $_FILES['userfile'] ['name'])); if ($file_name == "") { formThemBangDiem("Tên file không hợp lệ", $maMH, $lop, $nhom, $lanThi, $gvCham, $gvCoiThi, $hocki); } // Kiểm tra kiểu file else if (($file_type != "application/pdf") && ($file_type != "image/jpeg")) { formThemBangDiem("Chỉ upload file PDF JPG", $maMH, $lop, $nhom, $lanThi, $gvCham, $gvCoiThi, $hocki); } else if ($_FILES['userfile']['error'] > 0) { formThemBangDiem("Lỗi: " $_FILES['userfile'] ['error'], $maMH, $lop, $nhom, $lanThi, $gvCham, $gvCoiThi, $hocki); } else { $duongDan = $upload_dir $file_name "." $file_ext; $result = move_uploaded_file($temp_name, $duongDan); if ($result) { $nguoiCapNhat = mysql_real_escape_string($user); $query = "INSERT INTO data (tenfile, loaifile, duongdan, mamh, lop, nhom, lanthi, gvcham, gvcoithi, f_gvCham, f_gvCoiThi, nguoicapnhat, solanxem, hocki) VALUES ('$file_name', '$file_ext', '$duongDan', '$maMH', '$lop', '$nhom', '$lanThi', '$gvCham', '$gvCoiThi', '$f_gvCham', '$f_gvCoiThi', '$nguoiCapNhat', 1, '$hocki')"; mysql_query($query) or die(mysql_error()); header("Location: $php_self?page=1"); } else if (!$result) { formThemBangDiem("Có lỗi không xác định xảy ra.", $maMH, $lop, $nhom, $lanThi, $gvCham, $gvCoiThi, $hocki); } } } Sử dụng Google Docs giúp xem file PDF trực tuyến: 3.1 Giới thiệu Google Docs: Google Docs tiện ích Google, xem công cụ dùng để thay phần mềm Microsoft Office Google Docs hỗ trợ ta thao tác tài liệu trực tiếp Web, hỗ trợ nhiều định dạng tập tin DOC, XLS, ODT, ODS, RTF, CSV, PPT, v.v… Với giao diện thân thiện nhanh chóng thao tác phần mềm Microsoft Office, Google Docs không tạo cảm giác lạ lẫm cho người sử dụng Ngoài ra, mạnh Google Docs giúp người dùng chia sẻ tài liệu nhanh chóng, dễ dàng, quản lý tài liệu cách an toàn Hỗ trợ 13 nhiều người thao tác lên tài liệu sẵn có Google Docs không phụ thuộc vào hệ điều hành người sử dụng, không phụ thuộc vào phần mềm cài đặt máy nên tạo cho người dùng tính dễ sử dụng Google Docs hỗ trợ trích xuất tài liệu nhiều định dạng khác 3.2 Lý sử dụng Google Docs: • Hệ thống email sinh viên giảng viên sử dụng hệ thống Google nên kết hợp sử dụng Google Docs nhằm tối ưu tính quản lý • Hỗ trợ cho người dùng không cần nhiều kiến thức tin học xem tài liệu cách nhanh chóng tiện lợi • Google Docs hỗ trợ nhiều loại định dạng tài liệu khác nhau, đó, bảng điểm gốc hỗ trợ tốt định dạng • Nếu phát triển tương lai, Google Docs nơi chia sẻ tài liệu giữ thầy cô – sinh viên, sinh viên – sinh viên nhà trường 3.3 Tiện ích Google Docs quản lý bảng điểm gốc: • Tìm kiếm tài liệu: Google Docs sử dụng công nghệ ORC (Optical Character Recognition) công nghệ nhận dạng chữ viết hình ảnh, giúp ta tìm kiếm tài liệu PDF • Phóng to/Thu nhỏ: hỗ trợ cho người sử dụng có tật mắt mắt sử dụng tốt • Hỗ trợ in trang: giúp in tài liệu trực tiếp máy in • Hỗ trợ xem toàn hình: giúp cho hình tài liệu xem rộng hơn, lớn • Hỗ trợ download tài liệu gốc: hỗ trợ cho người dùng công tác lưu trữ máy tính • Lưu tài liệu vào Google Docs: hỗ trợ người dùng lưu tài liệu, quản lý tài liệu vào Google Docs • Chia sẻ tài liệu: chia sẻ cho bạn bè, đồng nghiệp tài liệu để chỉnh sửa An toàn bảo mật: 14 4.1 Xác định nguy cơ: Hệ thống quản lý bảng điểm gốc chạy hệ thống máy chủ nhà trường đưa vào áp dụng Do đó, việc xác định nguy tiềm ẩn giúp ta phòng tránh rủi ro xảy hệ thống Các nguy hiểm ta phải đối đầu là: tin tặc công từ bên vào hệ thống tài khoản quản trị bị Để khắc phục vấn đề này, từ khâu thiết kế, hệ thống có tiêu chí để phòng tránh công • Phòng chống công từ bên vào hệ thống: hệ thống cho phép người dùng tìm kiếm liệu Do vậy, điểm nguy hiểm tin tặc đưa liệu sai liệu khai thác Để tránh điều xảy ra, hệ thống có chế phòng tránh SQL Injection, phòng tránh lỗi XSS từ phía người quản trị (nếu bị tin tặc chiếm quyền quản trị), phòng tránh lỗi công tập tin PDF chứa mã độc • Phòng chống công tin tặc chiếm quyền quản trị: tin tặc chiếm quyền quản trị không công XSS hệ thống kiểm soát chống công thông qua XSS chống tin tặc lợi dụng upload backdoor upload tài liệu PDF có chứa mã độc Như vậy, ta xác định mối nguy hiểm tiềm tàng bên hệ thống có giải pháp phòng chống, giúp hệ thống vừa ổn định vừa an toàn người quản trị người dùng Không thể xâm nhập sâu gây hại lớn hệ thống 4.2 An toàn với SQL Injection: 4.2.1 SQL Injection gì? SQL injection kỹ thuật điền vào đoạn mã SQL bất hợp pháp cho phép khai thác lỗ hổng bảo mật tồn sở liệu ứng dụng Lỗ hổng bảo mật xuất ứng dụng đoạn mã kiểm tra chuỗi ký tự thoát nhúng câu truy vấn SQL định kiểu đầu vào không rõ ràng hay lỗi cú pháp SQL lập trình viên khiến cho đoạn mã ngoại lai xử lý ý muốn Nó ví dụ rủi ro ngôn ngữ lập trình hay ngôn ngữ kịch nhúng ngôn ngữ khác Tấn công SQL injection hiểu hình thức công chèn bất hợp pháp đoạn mã SQL 15 4.2.2 Xác định điểm có nguy bị công SQL Injection: • Ô tìm kiếm: thông tin đưa vào ô tìm kiếm gởi cho máy chủ xử lý, máy chủ chuyển sở liệu để tìm kiếm trả kết • Ô đăng nhập: người dùng nhập thông tin username password vào ô đăng nhập thông tin gởi cho máy chủ xử lý username để lấy password so sánh, chèn mã độc vị trí username sở liệu xử lý sai dẫn đến bị công hệ thống • Các ô điền thông tin bảng điểm: thông tin gởi lên sở liệu lưu trữ, hoàn toàn bị công SQL Injection 4.2.3 Phương pháp xử lý: 4.2.3.1 Dùng hàm mysql_real_escape_string() có sẵn PHP: Hàm hàm dựng sẵn PHP nhằm hạn chế lỗi SQL Injection cách phía trước thêm dấu \ (slash) phía trước dấu ‘ (nháy đơn) để tránh SQL Injection $maMH = htmlentities(mysql_real_escape_string($_POST['maMH'])); $lop = htmlentities(mysql_real_escape_string($_POST['lop'])); $nhom = htmlentities(mysql_real_escape_string($_POST['nhom'])); $lanThi = htmlentities(mysql_real_escape_string($_POST['lanThi'])); $hocki = htmlentities(mysql_real_escape_string($_POST['hocki'])); $gvCham = htmlentities(mysql_real_escape_string($_POST['gvCham'])); $gvCoiThi = htmlentities(mysql_real_escape_string($_POST['gvCoiThi']) ); 4.2.3.2 Xây dựng hàm kiểm tra SQL Injection xảy ra: Bên cạnh việc sử dụng hàm có sẵn PHP, hệ thống tạo riêng cho hàm nhằm kiểm tra xem câu lệnh có nghi vấn SQL Injection xảy hay không? Nếu có loại bỏ câu lệnh SQL bên dòng input function detectSQLInjection($str) { $str = strtolower($str); $detect = array("'", '"', "union", "select", "alter", "table", "database", "sql", "mysql", "\\"); 16 $remove = array("", "", "", "", "", "", "", "", "", ""); return str_replace($detect, $remove, $str); } 4.3 An toàn với File Upload: 4.3.1 File Upload gì? Yêu cầu chương trình đặt cho phép người quản trị upload bảng điểm gốc Do đó, tin tặc chiếm quyền quản trị cách đó, tin tặc upload mã độc backdoor nhằm chiếm quyền điều khiển máy chủ Hoặc file upload lên file độc nhằm chiếm quyền điều khiển máy người truy cập tạo nên hệ thống không an toàn máy chủ lẫn người dùng 4.3.2 Xác định điểm có nguy bị công File Upload: • Ô upload mục quản trị: ô cho phép người quản trị upload bảng điểm gốc lên máy chủ 4.3.3 Phương pháp công xử lý: 4.3.3.1 Phương pháp kiểm tra file upload JavaScript: Giả sử ta có file sau phép người dùng upload: Secure file upload PHP Web Applications function chkFileExtension() { var str=document.upload.userfile.value; var ext=str.substring(str.length,str.length-3); if ( ext != "gif") { alert("File is invalid"); return false; } else { return true; }; } Select the file to upload: 17 Như vậy, file kiểm tra phía client-side Không an toàn phía client tức tin tặc toàn kiểm soát cho phép upload file mã độc lên 4.3.3.2 Phương pháp kiểm tra kiểu file từ phía Server: Giả sử ta có đoạn mã sau dùng để kiểm tra upload: Điều không hoàn toàn an toàn, tin tặc hoàn toàn đổi kiểu file công vào máy chủ 4.3.3.3 Kiểm tra MIME file tải lên: Giả sử có đoạn mã sau: Nhưng tin hoàn toàn dùng file jpg để thỏa mãn kiểm tra chèn mã độc vào file jpg 4.3.3.4 Trường hợp kiểm tra phần mở rộng file Server: Giả sử ta có đoạn mã sau đây: Tuy nhiên, số máy chủ cấu hình cho phép ta xử lý file kiểm tra file PHP 4.3.3.5 Giải pháp: 19 Để giải vấn đề này, ta xây dựng thư mục chứa file upload nằm thư mục webroot từ chối truy cập đến thư mục cách trực tiếp từ trình duyệt 4.4 An toàn với XSS Attack: 4.4.1 XSS Attack gì? Cross-Site Scripting (XSS) kĩ thuật công phổ biến hiên nay, đồng thời vấn đề bảo mật quan trọng nhà phát triển web người sử dụng web Bất kì website cho phép người sử dụng đăng thông tin mà kiểm tra chặt chẽ đoạn mã nguy hiểm tiềm ẩn lỗi XSS XSS kĩ thuật công cách chèn vào website động (ASP, PHP, CGI, JSP ) thẻ HTML hay đoạn mã script nguy hiểm gây nguy hại cho người sử dụng khác Trong đó, đoạn mã nguy hiểm đựơc chèn vào hầu hết viết Client-Site Script JavaScript, JScript, DHTML thẻ HTML 4.4.2 Xác định điểm có nguy bị công XSS Attack: • Ô thông tin bảng điểm: thông tin bảng điểm hoàn toàn điền mã XSS Attack tin tặc chiếm quyền quản trị 4.4.3 Phương pháp xử lý: 4.4.3.1 Dùng hàm htmlspecialchars() có sẵn PHP: Hàm htmlspecialchars() dùng để chuyển thẻ HTML JavasScript sang dạng text, không thay đổi hiển thị $maMH = htmlspecialchars(mysql_real_escape_string($_POST['maMH']) ); $lop = htmlspecialchars(mysql_real_escape_string($_POST['lop'])) ; $nhom = mysql_real_escape_string($_POST['nhom']); $lanThi = mysql_real_escape_string($_POST['lanThi']); $hocki = mysql_real_escape_string($_POST['hocki']); $gvCham = htmlspecialchars(mysql_real_escape_string($_POST['gvCham' ])); $gvCoiThi = 21 htmlspecialchars(mysql_real_escape_string($_POST['gvCoiTh i'])); $f_gvCham = khongdau($gvCham); $f_gvCoiThi = khongdau($gvCoiThi); $soLanXem = mysql_real_escape_string($_POST['soLanXem']); Tuy nhiên, phương pháp xử lý hàm htmlspecialchars() có sẵn PHP không khả thi ký tự nhập vào tiếng Việt số chữ tiếng Việt htmlspecialchars() xử lý, đem lại kết không ý muốn hiển thị Do đó, cách không lựa chọn để sử dụng 4.4.3.2 Dùng hàm kiểm tra xây dựng riêng cho hệ thống: Để khắc phục thiếu sót mà htmlspecialchars() đem đến Hệ thống xây dựng hàm riêng để kiểm tra lọc tất ký tự đặc biệt có nguy tiềm ẩn đem đến lỗi XSS không nằm danh sách ký tự sử dụng cho thông tin bảng điểm gốc function checkXSS($str){ $detect = array("'", '"', "", ".", "/", "[", "]", "?", "\\", ",", "(", ")"); $remove = array("", "", "", "", "", "", "", "", "", "", "", "", ""); return str_replace($detect, $remove, $str); } IV KẾT LUẬN – ĐỀ NGHỊ Kết luận: Đề tài đạt yêu cầu đặt ban đầu quản lý tìm kiếm bảng điểm gốc cách khoa học Giúp cho sinh viên phòng đào tạo công tác tra cứu tìm kiếm Xây dựng hệ thống đáp ứng yêu cầu đề đề cao tính an toàn, bảo mật hệ thống Đề nghị: Để đề tài áp dụng cách thức rộng rãi cần có thời gian chạy thử nghiệm hệ thống có khảo sát ý kiến sinh viên cán phòng đào tạo thiếu sót, phần việc cần cải tiến nhiều 22 23 TÀI LIỆU THAM KHẢO oOo Derek J Balling, Jeremy Zawodny, 2004 High Performance MySQL, O'Reilly Hugh E Williams, David Lane, 2002 Web Database Application with PHP & MySQL, O’Reilly Rasmus Lerdorf, Kevin Tatroe, 2002 Programming PHP, O’Reilly Ilia Alshanetsky, 2005 php|architect’s Guide to Security, Marco Tabini Phạm Hữu Khang, 2007 Xây dựng ứng dụng Web PHP & MySQL, NXB Mũi Cà Mau [...]... quả"; "Không có kết 2.2.2.3 Quản lý tập tin trên máy chủ: Tập tin bảng điểm gốc không những được quản lý thông tin trong cơ sở dữ liệu mà còn được quản lý trên máy chủ Giúp cho người quản trị máy chủ có thể dễ dàng nhận biết và hiểu thông tin của bảng điểm gốc, không cần tốn nhiều thời gian để tra cứu khi cần thiết Tập tin bảng điểm gốc sẽ được lưu trên máy chủ theo dạng: /data/học_kì/mã_môn_học-lớp_(không_có_dấu)-nhóm-lần_thihọc_kì-GV_Chấm_(không_có_dấu)-GV_CoiThi_(không_có_dấu)Ngày_nhập.đuôi_file... Hỗ trợ download tài liệu gốc: hỗ trợ cho người dùng trong công tác lưu trữ trên máy tính • Lưu tài liệu vào Google Docs: hỗ trợ người dùng lưu tài liệu, quản lý tài liệu của mình vào Google Docs • Chia sẻ tài liệu: chia sẻ cho bạn bè, đồng nghiệp tài liệu để có thể cùng chỉnh sửa 4 An toàn và bảo mật: 14 4.1 Xác định nguy cơ: Hệ thống quản lý bảng điểm gốc sẽ chạy trên hệ thống máy chủ của nhà trường... được những rủi ro có thể xảy ra đối với hệ thống Các nguy hiểm ta phải đối đầu là: tin tặc tấn công từ bên ngoài vào hệ thống và tài khoản quản trị bị mất Để khắc phục vấn đề này, ngay từ khâu thiết kế, hệ thống đã có những tiêu chí để phòng tránh tấn công • Phòng chống tấn công từ bên ngoài vào hệ thống: hệ thống cho phép người dùng tìm kiếm dữ liệu Do vậy, điểm nguy hiểm nhất là khi tin tặc đưa dữ... liệu nhanh chóng, dễ dàng, quản lý tài liệu một cách an toàn Hỗ trợ 13 nhiều người cùng thao tác lên một tài liệu sẵn có Google Docs không phụ thuộc vào hệ điều hành của người sử dụng, không phụ thuộc vào phần mềm cài đặt trên máy nên tạo cho người dùng tính dễ sử dụng Google Docs còn hỗ trợ trích xuất tài liệu ra nhiều định dạng khác nhau 3.2 Lý do sử dụng Google Docs: • Hệ thống email sinh viên và... thác được Để tránh điều đó xảy ra, hệ thống đã có cơ chế phòng tránh SQL Injection, phòng tránh lỗi XSS từ phía của người quản trị (nếu bị tin tặc chiếm quyền quản trị), phòng tránh lỗi tấn công trong các tập tin PDF chứa mã độc • Phòng chống tấn công khi tin tặc chiếm được quyền quản trị: khi tin tặc chiếm được quyền quản trị thì không thế tấn công XSS do trong hệ thống đã kiểm soát được chống tấn... là cho phép người quản trị có thể upload bảng điểm gốc Do đó, nếu tin tặc chiếm được quyền quản trị bằng cách nào đó, tin tặc có thể upload mã độc là một backdoor nhằm chiếm quyền điều khiển máy chủ Hoặc file được upload lên là một file độc nhằm chiếm quyền điều khiển của máy người truy cập thì tạo nên một hệ thống không an toàn đối với cả máy chủ lẫn người dùng 4.3.2 Xác định những điểm có nguy cơ bị... tự được sử dụng cho thông tin bảng điểm gốc function checkXSS($str){ $detect = array("'", '"', "", ".", "/", "[", "]", "?", "\\", ",", "(", ")"); $remove = array("", "", "", "", "", "", "", "", "", "", "", "", ""); return str_replace($detect, $remove, $str); } IV KẾT LUẬN – ĐỀ NGHỊ 1 Kết luận: Đề tài đã đạt yêu cầu đặt ra ban đầu là quản lý và tìm kiếm bảng điểm gốc một cách khoa học Giúp cho... backdoor hoặc upload tài liệu PDF có chứa mã độc Như vậy, ta đã xác định được các mối nguy hiểm tiềm tàng bên trong hệ thống và có những giải pháp phòng chống, giúp hệ thống vừa ổn định vừa an toàn đối với cả người quản trị cũng như người dùng Không thể xâm nhập sâu cũng như gây hại lớn đối với hệ thống 4.2 An toàn với SQL Injection: 4.2.1 SQL Injection là gì? SQL injection là một kỹ thuật điền vào những... vào ô đăng nhập thì thông tin được gởi cho máy chủ xử lý username để lấy password và so sánh, nếu chèn mã độc tại vị trí username thì cơ sở dữ liệu có thể xử lý sai dẫn đến bị tấn công trong hệ thống • Các ô điền thông tin về bảng điểm: thông tin đều gởi lên cơ sở dữ liệu lưu trữ, và hoàn toàn có thể bị tấn công SQL Injection 4.2.3 Phương pháp xử lý: 4.2.3.1 Dùng hàm mysql_real_escape_string() có sẵn... có thể là nơi chia sẻ tài liệu giữ thầy cô – sinh viên, giữa sinh viên – sinh viên trong nhà trường 3.3 Tiện ích của Google Docs trong quản lý bảng điểm gốc: • Tìm kiếm ngay trong tài liệu: Google Docs sử dụng công nghệ ORC (Optical Character Recognition) là công nghệ nhận dạng chữ viết trên hình ảnh, giúp ta có thể tìm kiếm ngay trong tài liệu PDF • Phóng to/Thu nhỏ: hỗ trợ cho người sử dụng có tật ... sinh viên có kết điểm nhanh xác nhất, giúp phòng đào tạo quản lý hệ thống bảng điểm gốc Bên cạnh đó, đề tài tập trung vào quản lý bảng điểm theo định hướng hệ tín nên giúp cho hệ thống với định... CSDL với bảng chứa thông tin bảng điểm gốc cần lưu trữ sau: • ID: mã cho bảng điểm cần lưu trữ Mục giúp xác định cách nhanh xác cho bảng điểm hệ thống • TenFile: tên file bảng điểm Giúp hệ thống. .. ý thức xé bảng điểm dán Khoa, làm khó khăn cho bạn lại Điểm trang web có tính chất tham khảo, sở chắn Do vậy, phần mềm quản lý bảng điểm gốc giúp sinh viên dễ dàng tìm kiếm bảng điểm gốc mình,