Nghiên cứu về phát hiện tấn công chèn mã SQL dựa trên phân tích cú pháp câu lệnhNghiên cứu về phát hiện tấn công chèn mã SQL dựa trên phân tích cú pháp câu lệnhNghiên cứu về phát hiện tấn công chèn mã SQL dựa trên phân tích cú pháp câu lệnhNghiên cứu về phát hiện tấn công chèn mã SQL dựa trên phân tích cú pháp câu lệnhNghiên cứu về phát hiện tấn công chèn mã SQL dựa trên phân tích cú pháp câu lệnhNghiên cứu về phát hiện tấn công chèn mã SQL dựa trên phân tích cú pháp câu lệnh
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG - TRẦN VĂN SINH NGHIÊN CỨU VỀ PHÁT HIỆN TẤN CÔNG CHÈN MÃ SQL DỰA TRÊN PHÂN TÍCH CÚ PHÁP CÂU LỆNH LUẬN VĂN THẠC SĨ KỸ THUẬT (Theo định hướng ứng dụng) HÀ NỘI - 2016 HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THÔNG - TRẦN VĂN SINH NGHIÊN CỨU VỀ PHÁT HIỆN TẤN CƠNG CHÈN MÃ SQL DỰA TRÊN PHÂN TÍCH CÚ PHÁP CÂU LỆNH CHUYÊN NGÀNH : HỆ THỐNG THÔNG TIN MÃ SỐ: 60.48.01.04 LUẬN VĂN THẠC SĨ KỸ THUẬT (Theo định hướng ứng dụng) NGƯỜI HƯỚNG DẪN KHOA HỌC: TS HOÀNG XUÂN DẬU HÀ NỘI - 2016 i LỜI CAM ĐOAN Tơi cam đoan cơng trình nghiên cứu riêng Các số liệu, kết nêu luận văn trung thực chưa cơng bố cơng trình Tác giả luận văn Trần Văn Sinh ii LỜI CÁM ƠN Lời em muốn gửi lời biết ơn chân thành tới thầy Hoàng Xuân Dậu, người tận tâm dẫn, định hướng cho em suốt trình học tập làm luận văn tốt nghiệp Trong suốt thời gian thực luận văn thầy tạo điều kiện cho em thời gian giúp đỡ quý báu kiến thức tài liệu tham khảo để em hồn thành luận văn tốt nghiệp cách tốt Và sau em muốn gửi lời biết ơn chân thành tới tồn thể thầy trường Các thầy người có kiến thức sâu rộng, nhiệt tình với sinh viên, hết thầy ln gương sáng nghị lực, lịng say mê khoa học, trực cho chúng em Những lời biết ơn thân thương xin kính gửi tới bố mẹ Bố mẹ cho khứ, tương lai Cám ơn người bạn tốt tập thể lớp cao học M14CQ1S02-B, người bạn chia sẻ niềm vui, nỗi buồn, bên cạnh động viên trình học tập thực luận văn Kỉ niệm bạn kỉ niệm đẹp tơi cịn ngồi ghế giảng đường Cuối em xin kính chúc thầy tồn thể bạn sinh viên trường Học viện Bưu Chính Viễn Thông sức khỏe dồi dào, đạt thành công đường học tập nghiên cứu khoa học Chúc trường ta sớm trở thành cờ đầu giáo dục nước nhà Quốc tế Xin trân trọng cám ơn! Tác giả Trần Văn Sinh iii DANH MỤC TỪ VIẾT TẮT STT 10 11 12 Từ viết tắt API DDL DML HTTP IDS JDBC LDAP OS OWASP PDO SQL WAF Từ đầy đủ Application Program Interface Data Definition Language Data Manipulation Language The Hypertext Transfer Protocol Intrusion Detection System Java Database Connectivity The Lightweight Directory Access Protocol Operation System The Open Web Application Security Project PHP Data Objects Structured Query Language Web Application Firewall iv DANH MỤC CÁC BẢNG BIỂU Bảng 1.1: Cú pháp đại diện tham số truy vấn C# 25 Bảng 1.2: Mã hóa dấu nháy đơn .26 Bảng 2.1: Ngôn ngữ DML 34 Bảng 2.2: Ngôn ngữ DDL 34 Bảng 2.3: Câu lệnh điều khiển truy xuất liệu 35 Bảng 2.4: Câu lệnh quản lý giao tác 35 Bảng 2.5: Câu lệnh lập trình .35 Bảng 2.6: Danh sách số từ khóa nguy hiểm .50 Bảng 3.1: Bảng liệu tệp lưu trữ giá trị băm cấu trúc câu truy vấn .58 Bảng 3.2: Thông tin câu truy vấn hợp lệ 59 v DANH MỤC CÁC HÌNH VẼ Hình 1.1: Thống kê 10 điểm yếu phổ biến 2008 Hình 1.2: Thống kê 10 điểm yếu phổ biến năm 2009 Hình 1.3: Thống kê thời gian trung bình khắc phục điểm yếu 2008 Hình 1.4: Thống kê thời gian trung bình khắc phục điểm yếu 2009 Hình 1.5: Thống kê điểm yếu thường khai thác Hình 2.1: Minh họa đặc tả câu lệnh 44 Hình 2.2: Sơ đồ bố trí lọc CSDL 45 Hình 2.3: Ví dụ phân tích câu truy vấn .46 Hình 2.4: Mơ hình hoạt động phân tích cấu trúc truy vấn 47 Hình 2.5: Mơ hình phát cơng chèn mã SQL dựa phân tích cú pháp câu lệnh 50 Hình 3.1: Mơ hình lọc sở liệu 53 Hình 3.2: Dịng lệnh thực chạy ứng dụng lọc sở liệu 58 Hình 3.3: Kết phân tích tệp liệu câu truy vấn đầu vào 58 Hình 3.4: Thơng tin lọc sở liệu thu 59 Hình 3.5: Thơng tin thu lại cơng chèn mã 60 Hình 3.6: Thông báo lỗi cho người dùng 61 vi MỤC LỤC LỜI CAM ĐOAN i LỜI CÁM ƠN ii DANH MỤC TỪ VIẾT TẮT iii DANH MỤC CÁC BẢNG BIỂU iv DANH MỤC CÁC HÌNH VẼ v MỞ ĐẦU CHƯƠNG I TỔNG QUAN VỀ TẤN CÔNG CHÈN MÃ SQL VÀ CÁC BIỆN PHÁP PHÒNG CHỐNG 1.1 Khái quát công chèn mã SQL .3 1.1.1 Giới thiệu công chèn mã SQL 1.1.2 Cơ chế công chèn mã SQL 1.1.3 Các dạng công chèn mã SQL 11 1.2 Các biện pháp phịng chống cơng chèn mã SQL 19 1.2.1 Các biện pháp phịng chống mức lập trình 20 1.2.2 Các biện pháp phòng chống mức độ tảng 30 1.3 Kết chương 32 CHƯƠNG II PHÁT HIỆN TẤN CƠNG CHÈN MÃ SQL DỰA TRÊN PHÂN TÍCH CÚ PHÁP CÂU LỆNH 33 2.1 Khái quát ngôn ngữ SQL cú pháp câu lệnh SQL .33 2.1.1 Giới thiệu ngôn ngữ SQL 33 2.1.2 Cú pháp câu lệnh SQL .36 2.2 Phát công chèn mã SQL dựa phân tích cú pháp câu lệnh .43 2.2.1 Xây dựng đặc tả câu lệnh SQL hợp lệ 43 2.2.2 Bắt câu lệnh SQL từ ứng dụng web 44 2.2.3 Phân tích cú pháp câu lệnh SQL 45 2.3 Kết chương 51 CHƯƠNG III THỬ NGHIỆM VÀ ĐÁNH GIÁ 52 3.1 Xây dựng mơ hình thử nghiệm 52 3.1.1 Kiến trúc lọc câu lệnh SQL - Database Filter 52 3.1.2 Cài đặt lọc sở liệu 54 3.1.3 Giới thiệu số mơ đun chương trình 56 3.2 Một số kết 57 vii 3.2.1 Khởi tạo hệ thống 57 3.2.2 Kịch thử nghiệm công chèn mã 60 3.3 Nhận xét đề xuất 62 3.3.1 Nhận xét .62 3.3.2 Đề xuất 63 3.4 Kết chương 63 KẾT LUẬN 64 TÀI LIỆU THAM KHẢO 65 MỞ ĐẦU Tấn công chèn mã (Code injection attacks) nói chung cơng chèn mã SQL (SQL injection attacks) nói riêng dạng công phổ biến lên máy chủ ứng dụng, gây nhiều hậu nghiêm trọng Tấn công chèn mã SQL dạng công chủ yếu thực website, tin tặc nhúng mã độc SQL vào liệu người dùng, gửi đến máy chủ web thực máy chủ sở liệu (CSDL) ứng dụng web Tùy theo mức độ tinh vi mã độc SQL, công chèn mã SQL cho phép tin tặc vượt qua khâu xác thực người dùng, chèn, sửa, xóa liệu bảng liệu CSDL, đánh cắp thơng tin CSDL, chí chiếm quyền điều khiển hệ thống chạy máy chủ CSDL Có hai ngun nhân cơng chèn mã SQL: (1) liệu từ người dùng nguồn khác khơng người lập trình kiểm tra, kiểm tra không đầy đủ, (2) trang web sử dụng câu truy vấn động, đó, mã lệnh SQL gốc ghép với liệu từ người dùng để tạo câu truy vấn gửi đến thực máy chủ CSDL Do tính chất nghiêm trọng cơng chèn mã SQL, nhiều biện pháp phịng chống dạng cơng nghiên cứu, đề xuất Có thể chia biện pháp phịng chống cơng chèn mã SQL thành hướng chính: (1) hướng thực mức lập trình (2) hướng mức tảng Các hướng mức lập trình yêu cầu trực tiếp thực sửa mã website, mã SQL ứng dụng để lọc liệu, để loại bỏ mã độc SQL Các hướng mức tảng thường không yêu cầu trực tiếp sửa mã website, mã SQL ứng dụng, mà thường sử dụng công cụ hệ thống, cài đặt công cụ bổ sung để lọc, phát nguy công chèn mã câu lệnh SQL gửi từ máy chủ web đến máy chủ CSDL Đề tài nghiên cứu thực luận văn theo hướng thứ 2, hướng độc lập với ứng dụng web – khơng địi hỏi sửa mã trang web CSDL Luận văn gồm chương sau: Chương – Tổng quan công chèn mã SQL biện pháp phòng chống: giới thiệu khái quát mục đích, chế mơ tả chi tiết kiểu 51 "cursor", "href", "declare", "delete", "drop", "exec", "execute", "fetch", "insert", "kill", "open", "select", "sys", "sysobjects", "syscolumns", "table", "update", "CHARO", "dumpfile", "load_fileO", "Grant ", "PRIVILEGES", "schemata", "information_schema", "column_name", "table_name", tables", "schema_name", "Super_priv", "table_schema", "columns", "@@datadir", "ASCIIO", "IF", "OUTFILE", "grantee", "privilege_type", "is_grantable", "user_privileges", "host", "user", "Select_priv", "Insert_priv", "Update_priv", "Delete_priv", Kiểm tra liệu đầu vào: Dữ liệu đầu vào người dùng bình thường chứa đoạn mã nguy hiểm cần kiểm tra, lọc dựa thư viện lọc liệu chuẩn cung cấp dự án OWASP Bước 3: Kiểm tra kết thúc Nếu trình kiểm tra phát cơng chèn mã SQL thơng tin câu truy vấn, thời gian thực hiện, địa IP ứng dụng web lưu trữ lại để phục vụ trình điều tra, nghiên cứu sau Đồng thời câu truy vấn bị loại bỏ Ngược lại câu truy vấn hợp lệ chuyển đến máy chủ sở liệu để thực 2.3 Kết chương Trong Chương II, luận văn trình bày tổng quan ngôn ngữ SQL với cấu trúc, lệnh sử dụng hệ quản trị sở liệu phương pháp phân tích cấu trúc chúng; đặc tả câu lệnh SQL chuẩn phương pháp để bắt câu truy vấn từ ứng dụng web Trên sở luận văn giới thiệu mơ hình phân tích cấu trúc câu truy vấn SQL phương pháp phát công chèn mã SQL dựa phân tích cấu trúc câu truy vấn Trên sở này, Chương III tập trung xây dựng lọc giúp phát công chèn mã SQL dựa phân tích cấu trúc câu truy vấn 52 CHƯƠNG III THỬ NGHIỆM VÀ ĐÁNH GIÁ 3.1 3.1.1 Xây dựng mơ hình thử nghiệm Kiến trúc lọc câu lệnh SQL - Database Filter Phần mô tả việc xây dựng lọc sở liệu (Database Filter) sử dụng kỹ thuật phân tích cấu trúc cú pháp câu truy vấn SQL gửi đến sở liệu từ ứng dụng Các câu lệnh phân loại không hợp lệ xem hành vi vi phạm bị loại bỏ Phương pháp tách bỏ giá trị thuộc tính (lấy từ đầu vào) câu truy vấn SQL (truy vấn động) thời gian thực so sánh cấu trúc chúng với truy vấn mẫu phân tích từ trước Vì vậy, cấu trúc dự kiến câu lệnh SQL ứng dụng web xác định cách rõ ràng, phát thay đổi cấu trúc để ngăn chặn Bộ lọc kiểm tra tính hợp lệ giá trị đầu vào tách từ câu truy vấn động Mơ hình kiến trúc lọc sở liệu chi tiết hóa từ Mơ hình phát cho Hình 2.6 mơ tả Hình 3.1 Mơ hình lọc sở liệu thực theo giai đoạn xử lý Giai đoạn 1: Xử lý liệu đầu vào Dữ liệu đầu vào danh sách câu truy vấn chuẩn (Query Template) câu truy vấn ứng dụng web cần bảo vệ sử dụng Các câu truy vấn đưa vào dạng text tách lấy cấu trúc cứng câu truy vấn mô đun Separate Processor Cấu trúc lưu trữ lại vào tệp liệu để tiện cho việc quản lý, đồng thời qua hàm băm MD5 sau lưu trữ vào Structure List dùng cho việc so sánh với cấu trúc câu truy vấn gửi từ ứng dụng web sang Giai đoạn 2: Lọc câu truy vấn từ máy chủ ứng dụng web gửi tới máy chủ sở liệu Mỗi gói tin gửi máy tính khác mạng gán địa IP kết nối đến dịch vụ định Các dịch vụ thường định nghĩa theo port đích gán vào trường header gói tin 53 Hình 3.1: Mơ hình lọc sở liệu Sử dụng Proxy có chức bắt gói tin gửi đến máy chủ sở liệu xử lý trước thực hiện, mơ tả mục 2.2.2 Dữ liệu gói tin bắt tách lấy phần liệu câu truy vấn Câu truy vấn chuẩn hóa lại thành dạng chuỗi gửi tới Separate Processor để xử lý Separate Processor xử lý câu truy vấn tách cấu trúc trường liệu nhạy cảm Dữ liệu chuyển đến Validate Processor Giai đoạn 3: Đây q trình kiểm tra tính đắn câu truy vấn gửi đến máy chủ sở liệu Nếu câu truy vấn đắn gửi đến máy chủ sở liệu để thực ngược lại bị loại bỏ gây lỗi máy chủ không hồi đáp phía máy chủ ứng dụng web 54 Quá trình kiểm tra lấy đầu vào danh sách cột, bảng liệu nguy hiểm không truy cập, từ khóa gây cơng chèn mã SQL công chèn mã script, danh sách câu truy vấn mẫu băm từ Giai đoạn Các danh sách nạp vào kiểm tra Đầu vào cấu trúc câu truy vấn liệu nhạy cảm gửi từ máy chủ ứng dụng web Quá trình kiểm tra chia thành bước: Bước 1: Kiểm tra liệu nhạy cảm Các liệu nhạy cảm chia thành từ khóa từ Giai đoạn kiểm tra, chúng tồn danh sách từ nguy hiểm, câu truy vấn bị loại bỏ, ghi lại thông tin kết thúc trình kiểm tra ngược lại trình kiểm tra chuyển sang Bước Bước 2: Cấu trúc câu truy vấn lấy từ Giai đoạn băm theo thuật toán băm sử dụng để băm câu truy vấn mẫu sau so sánh giá trị băm với giá trị băm danh sách vừa nạp Nếu tốn gói tin chứa câu truy vấn gửi sang cho máy chủ sở liệu thực hiện, ngược lại bị loại bỏ câu truy vấn ghi lưu trữ lại để kiểm tra, phân tích sau 3.1.2 Cài đặt lọc sở liệu Bộ lọc sở liệu xem plugin cài đặt máy chủ vật lí với máy chủ ứng dụng web máy chủ sở liệu, đặt máy chủ riêng biệt nằm máy chủ ứng dụng web máy chủ sở liệu Trong mơ hình thử nghiệm, lọc cài đặt máy chủ với máy chủ web máy chủ sở liệu Yêu cầu cài đặt bao gồm: Đầu vào: - Thông tin cổng, địa IP máy chủ sở liệu: Thông tin cổng, địa ip máy chạy lọc sở liệu - File chứa danh sách câu truy vấn ứng dụng web sử dụng lưu trữ dạng “statement.txt” - File chứa danh sách từ khóa nguy hiểm gây cơng chèn mã (blacklist.txt) - File chứa danh sách câu truy vấn chuẩn phân tích 55 Đầu ra: - File chứa danh sách câu truy vấn của ứng dụng web xử lý - File chứa danh sách câu truy vấn phát chứa mã nguy hiểm Khi nhận liệu đầu vào ứng dụng bắt đầu trình xử lý liệu đầu vào Các câu truy vấn mẫu ứng dụng web file “statement.txt” đưa vào Bộ xử lý phân tách xử lý đưa cấu trúc cứng lập trình viên phát triển Cấu trúc lưu trữ vào file “whitelist.txt” băm hàm MD5 Giá trị băm lưu trữ file “data.bin” đầu vào mô đun kiểm tra cấu trúc câu truy vấn Quá trình xử lý liệu thành công, lọc sở liệu bắt đầu hoạt động theo chức Dữ liệu từ máy chủ ứng dụng web trình gửi sang máy chủ sở liệu qua lọc sở liệu Tại liệu giải mã chuẩn hóa theo chuẩn utf-8 Dữ liệu đưa vào Separate Processor xử lý Đầu mô đun cấu trúc cứng câu truy vấn lập trình viên phát triển ứng dụng web liệu nhạy cảm: cột, bảng, hàm sử dụng câu truy vấn, liệu mềm – liệu người dùng nhập vào truy vấn máy chủ ứng dụng web Đầu Separate Processor liệu đầu vào Validate Processor Mô đun bao gồm hàm kiểm tra: Hàm kiểm tra cấu trúc: Hàm thực băm cấu trúc đầu vào câu truy vấn vừa Separate Processor gửi sang so sánh với giá trị băm bên chuẩn lưu trữ file “data.bin” Nếu khơng tìm thấy giá trị khớp, hàm trả lại giá trị False cho Validate Processor Hàm kiểm tra liệu nhạy cảm: Hàm thực kiểm tra cột, bảng, hàm, từ khóa thu từ Separate Processor có vi phạm với danh sách liệu nguy hiểm định nghĩa file “blacklist.txt” Nếu vi phạm, hàm dừng xử lý đưa giá trị False cho Validate Processor Hàm kiểm tra liệu người dùng: Hàm thực kiểm tra từ khóa gây cơng XSS cơng bước thứ hai công chèn mã SQL Nếu tồn hàm trả lại giá trị False cho Bộ kiểm tra cấu trúc 56 Quá trình kiểm tra kết thúc trả lại giá trị True or False cho lọc: - Nếu giá trị trả lại False : thực việc loại bỏ gói tin ghi lại thời gian, địa IP , nội dung câu truy vấn vào file log.txt - Giá trị trả lại True : gói tin ban đầu gửi sang bên máy chủ sở liệu thực truy vấn bình thường 3.1.3 Giới thiệu số mơ đun chương trình 3.1.3.1 Mơ đun proxy Mơ đun proxy giữ chức chặn gói tin chuyển từ máy chủ ứng dụng web sang máy chủ sở liệu sau chuẩn hóa lại liệu làm đầu vào cho mô đun kiểm tra Các chức mô đun mô tả mục 2.2.2 3.1.3.2 Mơ đun phân tích cú pháp Mô đun gồm thành phần: Keywords, Lexer, sqlparser, formatter Keyword: chứa danh sách từ khóa ngơn ngữ SQL sử dụng việc đối sánh, phân tích cấu trúc câu truy vấn Danh sách từ khóa chia thành mục riêng biệt theo mô hình ngơn ngữ SQL mục 2.1 đề xuất bao gồm DML, DDL, keyword thường Lexer: thực việc phân tích ngữ pháp câu truy vấn để tách liệu theo quy chuẩn ngữ pháp đề cập mục 2.1 Chức sử dụng biểu thức quy để phân tách ra: comment, newline, punctuation, wildcard, Keyword, liệu bảng, cột, toán tử, phép gán, hàm, từ khóa liên kết bảng liệu, kiểu liệu: Ví dụ: (r'( |# tokens.Comment.Single) ).*?(\r\n|\r|\n)', (r'[*]', tokens.Wildcard) (r'VALUES', tokens.Keyword) (r'[-]?[0-9]*(\.[0-9]+)?[eE][-]?[0-9]+', tokens.Number.Float) (r'|(CROSS\s+|NATURAL\s+)?)?JOIN\b', 57 tokens.Keyword) (r'[;:()\[\],\.]', tokens.Punctuation) Sau đưa cho chức sqlparser sử dụng Formatter: thực việc chuẩn hóa lại câu truy vấn bỏ dấu cách, chuẩn hóa theo utf-8 Sqlparser: thực chức chia câu truy vấn thành từ khóa sau gọi lexer thực việc phân tích ngữ pháp nhận lại kết đưa kết dạng danh sách với kết tương ứng với kiểu liệu định nghĩa thành cặp: 3.2 3.2.1 Một số kết Khởi tạo hệ thống Luận văn thực thử nghiệm ứng dụng website phát triển ngôn ngữ PHP CMS framework Ứng dụng web kết nối với máy chủ sở liệu sử dụng hệ quản trị sở liệu MySQL Ứng dụng web gồm có chức năng: - Hiển thị viết trường tìm kiếm nội dung viết có sở liệu - Chức đăng nhập/đăng xuất đăng ký tài khoản người dùng Dữ liệu ứng dụng web lưu trữ máy chủ sở liệu truy xuất câu truy vấn SQL Bộ lọc sở liệu cài đặt máy với máy chủ ứng dụng web máy chủ sở liệu phát triển dựa ngôn ngữ Python 3.5 Đầu tiên ta cho lọc chạy để phân tích liệu đầu vào thực chức proxy để chặn liệu kết nối từ phía máy chủ ứng dụng web sang máy chủ sở liệu: 58 Hình 3.2: Dịng lệnh thực chạy ứng dụng lọc sở liệu Tiếp theo cấu hình lại file config ứng dụng web sửa cổng kết nối sở liệu cổng lắng nghe lọc sở liệu Sau thực việc chạy ứng dụng lọc sở liệu Hình 3.3: Kết phân tích tệp liệu câu truy vấn đầu vào Kiểm tra kết sau phân tích liệu đầu vào: Bảng 3.1: Bảng liệu tệp lưu trữ giá trị băm cấu trúc câu truy vấn f6bbdac039ffb7150f76630c63c2bb7c d5d890ecebda6f4ddb73bcb4e382bf33 b6a1affca956a27fed817d9addc06a97 59 9205dd4222029661c6629d7df54183ae 758871af8ce02af6480859e8e873cc38 742ac585a9beaf91c7c2b4c52874aecb af1800de3e85814cd506a562124c9ad3 742ac585a9beaf91c7c2b4c52874aecb Bảng 3.2: Thông tin câu truy vấn hợp lệ SET NAMES utf8 SELECT * FROM Users; SELECT First_N ame,Last_NameUsers; SELECT All FROM Users; SELECT id FROM users WHERE email= OR username=; INSERT INTO users(username,password,email) VALUES (,,); SELECT * FROM users WHERE username= OR email= AND password=; SELECT userid FROM users WHERE email= OR username=; INSERT INTO users(username,password,email) VALUES (,,); Thực đăng nhập để kiểm tra hoạt động lọc sở liệu Hình 3.4: Thơng tin lọc sở liệu thu 60 Thông tin ghi lại bao gồm: thông tin phiên kết nối, phiên kết nối có ip nguồn đích từ đâu số lượng kết nối đến Tiếp theo thông tin câu truy vấn gửi đến máy chủ sở liệu Giá trị phân tích, thực băm kiểm tra với thông tin tệp liệu phân tích bước 3.2.2 Kịch thử nghiệm công chèn mã Để kiểm tra khả bắt phân tích, đánh giá câu truy vấn, luận văn tiến hành thử nghiệm dạng công chèn mã sau: - Công thức - Truy vấn không hợp lệ - Truy vấn phép hợp 3.2.2.1 Công thức Nhập giá trị vào trường đầu vào: Kết lọc sở liệu: Hình 3.5: Thơng tin thu lại công chèn mã Trả thông tin cho người dùng: 61 Hình 3.6: Thơng báo lỗi cho người dùng 3.2.2.2 Truy vấn không hợp lệ Nhập giá trị đầu vào: Kết lọc sở liệu: Trả thông tin cho người dùng: 62 3.2.2.3 Truy vấn phép hợp Nhập giá trị đầu vào: Thông tin trả phía lọc sở liệu: 3.3 3.3.1 Nhận xét đề xuất Nhận xét Với danh sách câu truy vấn cung cấp trước nhà phát triển ứng dụng web, lọc hoạt động tốt hiệu đảm bảo câu truy vấn gửi đến phù hợp với cấu trúc ngữ pháp xây dựng Kết kiểm tra liệu nhạy cảm phụ thuộc vào định nghĩa liệu nhạy cảm Do tính chất phụ thuộc vào đầu vào cung cấp nhà phát triển ứng dụng web nên tính phụ thuộc 63 lọc cao Bù lại, kết phát ngăn chặn hình thức đạt độ an toàn mức cao Trong trường hợp danh sách câu truy vấn không cung cấp trước ứng dụng hoạt động hiệu Mơ hình phát chủ yếu dựa vào việc kiểm tra tính sai cấu trúc ngữ pháp dựa vào danh sách liệu nhạy cảm từ khóa nguy hiểm Vấn đề xử lý câu truy vấn có độ trễ cao 3.3.2 Đề xuất Đưa hệ thống lọc câu truy vấn từ ứng dụng web cách thực trình học truy vấn Quá trình ứng dụng web nhà phát triển ứng dụng web chạy mơi trường tách biệt (khơng có công), chức ứng dụng web kiểm tra hoạt động Trong trình kiểm tra câu truy vấn SQL từ ứng dụng web gửi sang máy chủ sở liệu thu thập lại tạo thành mẫu đầu vào cho lọc sở liệu Điều đảm bảo tính tiện lợi cho nhà phát triển ứng dụng web Nên cài đặt ứng dụng lọc sở liệu phần mở rộng hệ thống phát ngăn chặn xâm nhập tường lửa Bổ sung hỗ trợ xử lý đa luồng cho hệ thống nhằm giảm độ trễ lọc 3.4 Kết chương Chương III trình bày chi tiết trình cài đặt thử nghiệm lọc sở liệu dựa phân tích cấu trúc cú pháp câu truy vấn để phát công chèn mã SQL Một số kịch công chèn mã đơn giản thử nghiệm Từ kết thực nghiệm, ta thấy phương pháp có triển vọng, có hiệu để phát công chèn mã SQL Mơ hình tiếp tục nghiên cứu, cải thiện, tối ưu ứng dụng hiệu thực tế 64 KẾT LUẬN Kết đạt - Luận văn trình bày khái quát khái quát công chèn mã SQL, chi tiết chế dạng công chèn mã SQL Trong phân tích chi tiết mục đích, phương thức mức độ nghiêm trọng số kiểu công chèn mã SQL gây cho ứng dụng web - Luận văn đưa biện pháp phát ngăn chặn công chèn mã SQL từ mức lập trình đến mức tảng Đặc biệt, luận văn tập trung nghiên cứu sâu phương pháp mơ hình phát cơng chèn mã SQL dựa câu trúc ngữ pháp câu truy vấn - Xây dựng thử nghiệm thành công lọc sở liệu sử dụng phát công chèn mã Từ kết thử nghiệm thu được, đồ án rút ưu điểm, nhược điểm mơ hình có hướng phát triển, cải thiện lọc tương lai Hướng phát triển Đề tài luận văn phát triển theo hướng: - Tiếp tục thử nghiệm lọc với nhiều ứng dụng web kết nối đến máy chủ sở liệu Từ đó, ta tinh chỉnh, cài đặt lại ứng dụng cho đạt hiệu cao Chương trình cần tối ưu hóa để tận dụng tối đa hiệu hệ thống phần cứng máy tính mạng Điều có ý nghĩa quan trọng việc đảm bảo tốc độ truy vấn liệu ứng dụng web trải nghiệm người dùng truy cập vào ứng dụng web - Sử dụng phương pháp học truy vấn cho ứng dụng để khả phát công chèn mã ứng dụng đạt hiệu cao - Nghiên cứu kết hợp ứng dụng với phương pháp phát công khác nhằm nâng cao khả phòng thủ cho ứng dụng web 65 TÀI LIỆU THAM KHẢO [1] Atefeh Tajpour, Suhaimi Ibrahim and Maslin Masrom (2011), SQL Injection Detection and Prevention Techniques, International Journal of Advancements in Computing Technology Volume 3, Number [2] C Anley (2002), Advanced SQL Injection In SQL Server Applications, Next Generation Security Software [3] IndraniBalasundaram and E Ramaraj (2011), An Approach to Detect and Prevent SQL Injection Attacks in Database Using Web Service, International Journal of Computer Science and Network Security, VOL.11 No.1 [4] J Clarke (2009), SQL attack and Defense, Syngress Publishing, Inc., [5] Kuldeep Kumar, Debasish Jena, and Ravi Kumar (2013), A Novel Approach to detect SQL injection in web applications, International Journal of Application or Innovation in Engineering & Management (IJAIEM), ISSN 2319-4847, Volume 2, Issue [6] Konstantinos Kemalis and Theodoros Tzouramanis (2008), SQL-IDS: A Specification-based Approach for SQL-Injection Detection, ACM SAC 08, March 16-20, 2008, Fortaleza, Ceara, Brazil [7] M F Estiban (2005), “Advanced SQL Injection in Oracle Databases,” Black Hat Briefings, pp 1-30 [8] M Howard D LeBlanc (2003), Writing Secure Code, tập 2, Microsoft Press,Redmond, Washington [9] V Nithya, R Regan and J Vijayaraghavan (2013), A Survey on SQL Injection attacks, their Detection and Prevention Techniques, International Journal Of Engineering And Computer Science, ISSN:2319-7242, Volume 2, Issue [10] http://community.whitehatsec.com/home/resource/stats.html ngày 4/5/2016