Nếu bạn bận không có thời gian làm mà vẫn muốn có bài giải để đi thi thì có thể tham khảo tài liệu này Nếu bạn bận không có thời gian làm mà vẫn muốn có bài giải để đi thi thì có thể tham khảo tài liệu này Nếu bạn bận không có thời gian làm mà vẫn muốn có bài giải để đi thi thì có thể tham khảo tài liệu này Nếu bạn bận không có thời gian làm mà vẫn muốn có bài giải để đi thi thì có thể tham khảo tài liệu này Nếu bạn bận không có thời gian làm mà vẫn muốn có bài giải để đi thi thì có thể tham khảo tài liệu này
Đề cương ơn tập mơn An tồn ứng dụng web CSDL – Lớp D16AT Phần I Lý thuyết 10 nguy lỗ hổng bảo mật hàng đầu ứng dụng Web theo OWASP 2017 A1 Injection (Chèn mã) Các dạng công XSS biện pháp phòng chống .3 Tấn cơng CSRF biện pháp phịng chống 10 Tấn cơng chèn mã SQL biện pháp phịng chống .10 Các phương pháp xác thực ứng dụng web, điểm yếu phòng chống 13 Các điểm yếu quản lý phiên biện pháp bảo mật phiên làm việc 16 Các lỗ hổng cấu hình phần mềm máy chủ web phòng chống 19 Các vấn đề biện pháp bảo mật trình duyệt web 23 Các yêu cầu bảo mật sở liệu, mơ hình tổng qt bảo mật sở liệu lớp bảo mật sở liệu 25 10 Bảo mật đối tượng CSDL 28 11 Sao lưu khơi phục dự phịng CSDL 28 12 Khái quát kiểm toán CSDL dạng kiểm toán CSDL 32 Phần II Bài tập Nhận dạng công chèn mã SQL: cho đoạn mã SQL, phân tích điểm yếu khả xảy cơng chèn mã SQL Cho ví dụ minh họa cụ thể Đề biện pháp khắc phục/sửa chữa Ví dụ 1: Cho câu lệnh SQL sau: SELECT * FROM tbl_users WHERE username = '" + username + '" AND password='" + password+"'" username password liệu đầu vào lấy từ HTML form Hãy phân tích khả câu lệnh bị công chèn mã SQL? Cho ví dụ minh họa với khả Ví dụ 2: Cho trang web tìm sản phẩm sử dụng câu lệnh SQL sau để tìm kiếm sản phẩm: Nguyễn Minh Đức|1 "SELECT * FROM tbl_sanpham WHERE tensanpham like '%" + tu_khoa + "%'" tbl_sanpham bảng lưu thông tin sản phẩm tu_khoa từ khóa tìm kiếm người dùng cung cấp từ HTML form Hãy phân tích khả trang web bị công chèn mã SQL với liệu khác cung cấp từ người dùng? Cho ví dụ minh họa với khả Bài làm 10 nguy lỗ hổng bảo mật hàng đầu ứng dụng Web theo OWASP 2017 A1 Injection (Chèn mã) A1 Chèn mã dạng lỗ hổng bảo mật cho phép tin tặc chèn mã vào liệu gửi đến thực hệ thống nạn nhân Dạng công phổ biến nghiêm trọng Ví dụ dăm ba lỗ hổng: Buffer overflow (Tràn đệm), SQL injection (chèn mã SQL), XPath/XQuery injection (chèn mã XPath/XQuery), LDAP lookups / injection (chẽn mã LDAP) Shell command injection (chèn lệnh shell) A2 Broken Authentication and Session Management (Xác thực quản phiên yếu) Nếu khâu xác thực trao quyền (thường dung web) khơng đủ mạnh lỗ hổng để kẻ công truy nhập đánh cắp thông tin Nếu phiên (Session) không quản lý chặt chẽ, kẻ công lợi dụng để chiếm điều khiển phiên làm việc người dùng Chuỗi nhận dạng phiên (ID) lên địa URL mà khơng mã hóa: http://www.errorsite.com/test.aspx?session_id=12345 A3 Cross-Site Scripting (XSS) (Lỗi XSS) XSS dạng công vào trình duyệt người dùng Kẻ cơng chèn mã script (thường mã javascript) vào trang web có lỗi XSS Khi người dùng mở trang mã script kẻ công thực hiện, giúp đánh cắp thơng tin lưu trình duyệt người dùng A4 Broken Access Control (Điều khiển truy nhập yếu) Các kiểm sốt truy nhập người dùng khơng thực chặt chẽ Kẻ cơng truy nhập trái phép vào tính năng, liệu, truy nhập, sửa đổi liệu người dùng khác, xem file nhạy cảm, thay đổi quyền truy nhập A5 Security Misconfiguration Lỗi cấu hình an ninh dạng lỗ hổng thiết lập quyền truy nhập vào trang không chuẩn, cho phép kẻ công Nguyễn Minh Đức|2 truy nhập trái phép vào trang, thư mục, tải thực file mã độc hệ thống - Lỗi quyền truy nhập files - Lỗi thực trang - Lỗi liệt kê files thư mục - Lỗi cho phép tải lên thực file mã chương trình A6 Sensitive Data Exposure (Rị rỉ liệu nhạy cảm) Nhiều ứng dụng web khơng có chế đủ mạnh để bảo vệ liệu nhạy cảm, thông tin thẻ tin dụng, số an sinh xã hội thông tin xác thực người dùng Kẻ cơng đánh cắp, chỉnh sửa thông tin nhạy cảm thể lạm dụng, trục lợi Cần có chế bổ sung để bảo vệ thơng tin nhạy cảm, mã hóa hạn chế quyền truy nhập vào files chứa thông tin nhạy cảm A7 Insufficient Attack Protection (Thiếu chế bảo vệ) Một lượng lớn ứng dụng giao diện lập trình ứng dụng (API) khơng có khả phát hiện, ngăn chặn đáp trả dạng công tự động thủ công Các chế bảo vệ cần không thực việc kiểm tra liệu đầu vào, mà cần phải tự động phát hiện, ghi log, đáp trả chí có khả ngăn chặn nỗ lực công Các vá cho ứng dụng cần triển khai nhanh chóng để ứng dụng bảo vệ trước dạng công A8 Cross-Site Request Forgery (CSRF) (Lỗi CSRF) CSRF dạng công người dùng web, lợi dụng chế tự động đăng nhập số website Kẻ công lừa người dùng thực đoạn mã độc, nhúng trang web bình thường ngữ cảnh người dùng phiên làm việc với website Mã độc chạy trình duyệt người dùng phiên làm việc giúp hacker thực giao dịch đánh cắp thông tin A9 Using Components with Known Vulnerabilities (Sử dụng thành phần chứa lỗ hổng biết) Các thành phần, bao gồm thư viện, framework mô đun phần mềm chạy với quyền truy nhập đầy đủ người dùng kích hoạt ứng dụng Nếu thành phần có chứa lỗ hổng bị khai thác gây việc liệu, máy chủ bị chiếm quyền điều khiển Các ứng dụng sử dụng thành phần chứa lỗ hổng biết làm suy giảm khả phịng vệ ứng dụng cho phép thực nhiều loại công lên hệ thống A10 Underprotected APIs (Các API không bảo vệ) Các ứng dụng đại liên quan đến máy khách “béo” API, JavaScript trình duyệt ứng Nguyễn Minh Đức|3 dụng di động Các máy khách thường kết nối đến API (như SOAP/XML, REST/JSON, RPC, GWT, ) Các API thường không bảo vệ chứa đựng nhiều lỗ hổng bảo mật Các dạng cơng XSS biện pháp phịng chống Tấn công Cross-Site Scriting phổ biến từ web hỗ trợ javascript vào ứng dụng web Nhúng trang web => chạy lòng trang web => Công cụ quát hệ thống chịu => truy nhập đến thông tin nhạy cảm người dùng Thường xuất cho phép người dùng nhập liệu sau hiển thị lên trang Đánh cắp Cookie, giả mạo lấy mật khẩu, Stored XSS Reflected XSS DOM-based XSS Stored XSS thường nhúng vào nội dung trang web lưu trữ sở liệu website Reflected XSS thường xuất liệu người dùng cung cấp sử dụng script máy chủ để tạo kết hiển thị lại cho người dùng Dạng công XSS thường xuất máy tìm kiếm, trang có tính tìm kiếm, biểu diễn Kịch công giống Reflected XSS, DOM – based XSS: HTML lưu sẵn máy người dùng, bị XSS, công thực trực tiếp máy người dùng Các website có nguy cao bị công Stored XSS cách trang cho phép đăng nội dung cho phép nhiều người xem nội dung Kịch bản: Website Hình thức công Reflected XSS thường gặp kẻ công gửi bẫy người dùng truy nhập URL khai thác có chứa mã cơng XSS thơng qua email hay tin nhắn Kịch bản: Ví dụ trang Nào Đó bị Trang có đoạn Please fill in the form Có Nguyễn Minh Đức|4 đăng thơng điệm bị XSS, Ai Đấy đăng viết câu view khéo léo nhúng mã XSS viết, người vào xem bị lấy cắp thông tin gửi cho Ai Đấy Reflected XSS Ai Đó tạo trang aido.net Một Bạn truy cập vào trang web Nào Đó có ID Cookie riêng Ai Đó giử cho Một Bạn link (lấy cookie chuyển trang aido.net) qua message email Một Bạn truy cập vào, Cookie bị Ai Đó lấy chiếm phiêm làm việc địa riêng Kẻ công tạo form lựa chọn giới tính thay cho Please fill in the form Nếu người dùng chọn giới tính, đoạn XSS thực Ăn cắp cookie người dùng hàm nhúng đoạn mã chuyển máy kẻ công Các biện pháp phòng chống Bộ lọc XSS (XSS Filter) kỹ thuật lọc từ, cú pháp nguy hiểm Phải cập nhập thường xuyên Cần lưu ý lọc liệu nhập phải thực máy chủ (server-side) lọc liệu nhập thực máy khách bị vơ hiệu hóa dễ dàng Thốt khỏi XSS (XSS Escape) kỹ thuật cho phép vơ hiệu hóa cơng XSS cách thay ký tự riêng (Character Escaping) HTML/script để chuyển đoạn mã thực thành liệu thơng thường Theo đó, kẻ cơng chèn mã XSS vào trang web, trình duyệt người dùng khơng thực đoạn mã cho chúng bị chuyển thành liệu thông thường Nên kết hợp để đặt hiệu Tấn công CSRF biện pháp phòng chống Kịch bản: CSRF (Cross-Site Request Forgery) dạng công bẫy nạn nhân tải trang web có chứa yêu cầu độc hại Kịch A muốn chuyển 100k cho B quan TPbank Mã chuyển acct=B&amount=100 Giả sửa A đăng nhập TPbank C tạo acct=C&amount=1000000 gửi cho A, lừa A kích vào A biết chuyển tiền nên C dấu URL ảnh width="1" height="1" Nguyễn Minh Đức|5 Phòng chống công CSRF: - Sử dụng "chuỗi đồng bộ" cho thao tác quan trọng Máy chủ tạo kiểm tra chuỗi để xác thực - Sử dụng chuỗi xác thực CAPTCHAR (gửi ảnh chữ - điềm: phân biệt người robot) 1977 - Sử dụng Viewstate (ASP.NET) Viewstate cho biết trạng thái trang gửi yêu cầu lên máy chủ - kẻ cơng khó làm giả - Sử dụng thư viện chuẩn để phòng chống CSRF: OWASP CSRF Guard, PHP CSRF Guard, Net CSRF Guard - Sử dụng giao thức OTP/Challenge-Response – password dùng lần cho thao tác quan trọng Tấn công chèn mã SQL biện pháp phịng chống Tấn cơng chèn mã SQL (SQL Injection) kỹ thuật cho phép kẻ công chèn mã SQL vào liệu gửi đến máy chủ cuối thực máy chủ sở liệu (1) vượt qua khâu xác thực người dùng, (2) chèn, sửa đổi, xóa liệu, (3) đánh cắp thơng tin sở liệu (4) chiếm quyền điều khiển hệ thống máy chủ sở liệu Có nguyên nhân - thường sảy web có kết nối tới server - Dữ liệu đầu vào từ người dùng từ nguồn khác không kiểm tra kiểm tra không kỹ lưỡng; - Sử dụng câu lệnh SQL động ứng dụng, có thao tác nối liệu người dùng với mã lệnh SQL gốc SELECT * FROM tbl_accounts WHERE username='aaaa' OR 1=1 ' AND password='aaaa' Truy nhập vào tài khoản aaaa 1=1 ln Xóa: Samsung Galaxy S8';DELETE FROM tbl_products; câu lệnh thành: SELECT * FROM tbl_products WHERE keyword like '%Samsung Galaxy S8';DELETE FROM tbl_products; %' Tương tự với: UPDATE, INSERT Chèn thêm: Galaxy S8';INSERT INTO tbl_administrators (username, password) VALUES ('attacker', 'abc12345'); Nguyễn Minh Đức|6 Phòng chống: (kết hợp biện pháp) - Kiểm tra lọc liệu đầu vào: + Kiểm tra tất liệu đầu vào, đặc biệt liệu nhập từ người dùng từ nguồn khơng tin cậy; + Kiểm tra kích thước định dạng liệu đầu vào; + Tạo lọc để lọc bỏ ký tự đặc biệt (như *, ‘, =, ) từ khóa ngơn ngữ SQL (SELECT, INSERT, UPDATE, DELETE, DROP, ) mà kẻ cơng sử dụng: - Sử dụng thủ tục sở liệu (stored procedures) chế tham số hóa liệu: + Đưa tất câu truy vấn (SELECT) cập nhật, sửa, xóa liệu (INSERT, UPDATE, DELETE) vào thủ tục Dữ liệu truyền vào thủ tục thông qua tham số, giúp tách liệu khỏi mã lệnh SQL + Hạn chế thực câu lệnh SQL động thủ tục; + Sử dụng chế tham số hóa liệu hỗ trợ nhiều ngơn ngữ lập trình web ASP.NET, PHP JSP - Thiết lập quyền truy nhập người dùng sở liệu: + Khơng cho người dùng có quyền truy cập hệ quản trị sở liệu truy nhập hệ thống, cho quản trị thơi + Chia nhóm người dùng, cấp quyền vừa đủ để truy nhập bảng biểu, thực câu truy vấn chạy thủ tục + Không cấp quyền thực câu truy vấn, cập nhật, sửa, xóa trực tiếp bảng liệu Thủ tục hóa tất câu lệnh cấp quyền thực thủ tục + Cấm vơ hiệu hóa (disable) việc thực thủ tục hệ thống (các thủ tục sở liệu có sẵn) cho phép can thiệp vào hệ quản trị sở liệu hệ điều hành - Sử dụng công cụ rà quét lỗ hổng chèn mã SQL: SQLMap, Acunetix Vulnerability Scanner Các phương pháp xác thực ứng dụng web, điểm yếu phòng chống Xác thực ứng dụng web Tên truy nhập (username) mật (password) chuẩn thực tế cho xác thực ứng dụng web: xác thực giao thức HTTP (Built-in HTTP Authentication), đăng nhập lần (Single Sign On – SSO) hệ xác thực tự phát triển Một số trường hợp đặc biệt, token phần cứng phần mềm thêm để tăng độ an toàn Xác thực sử dụng đặc điểm sinh trắc học đắt phức tạp Nguyễn Minh Đức|7 a) Xác thực giao thức HTTP Tương đối yếu – hạn chế dung Basic access authentication sử dụng trình duyệt yêu cầu truy nhập tài nguyên bảo vệ, thư mục file máy chủ web Máy khách gửi yêu cầu – Máy chủ gửi form (401) – máy khách nhập tài khoản – mã hóa base64 – máy chủ xác nhận cho vào hay không cho vào Ưu điểm đơn giản Digest access authentication tương tự Basic access authentication lưu trình xử lý Điểm khác: mật mã hóa hàm băm MD5 Nhược điểm base64 dê giải mã, mật lưu cookie b) Đăng nhập lần Đăng nhập lần (Single Sign On - SSO) cho phép người dùng đăng nhập lần thông qua giao diện xác thực để truy nhập vào nhiều hệ thống, dịch vụ khách VD: Sau đăng nhập, người dùng truy nhập hầu hết dịch vụ Google, GMail, Youtube, Google Talk, Google Adwords,… c) Các hệ xác thực tự phát triển Ưu điểm khả tùy biến cho phù hợp với yêu cầu ứng dụng cụ thể Gồm thành phần: - Cơ sở liệu tài khoản - Cơ sở liệu quản lý quyền truy nhập cho người dùng, nhóm người dùng - Trang đăng nhập, trang đăng xuất - Thành phần kiểm tra trạng thái đăng nhập quyền truy nhập - Thành phần kiểm tra quản lý phiên làm việc d) Phong chống Nguyễn Minh Đức|8 Mật khẩu: Thiết lập độ dài mật tối thiểu Đảm bảo độ khó mật (sử dụng nhiều ký tự) Không lưu mật dạng rõ (nên dùng dạng băm mà ko phải dạng mã hóa sử dụng khóa) Đổi mật định kỳ Hạn chế dùng lại mật Không dùng mật giống tên người dùng Cho phép khóa (disable) tài khoản Các điểm yếu quản lý phiên biện pháp bảo mật phiên làm việc Các điểm yếu quản lý phiên Session ID hay token tham số quan trọng phiên làm việc web Có hai dạng điểm yếu: Các điểm yếu sinh token phiên: - Token phiên có nghĩa: tên, email, xáo lộn => dễ đoán - Token phiên dễ đốn: dễ phân tích => nắm quy luật sinh token => cướp phiêm làm việc + Token che dấu thứ tự + Token phụ thuộc thời gian + Token tạo sử dụng số ngẫu nhiên yếu Các điểm yếu sử dụng token phiên: - Rị rỉ token mạng: khơng mã hóa, HTTPS bị - Rị rỉ token ghi log: ghi log ghi token, log proxy, trình duyệt máy chủ - Lỗ hổng ánh xạ token sang phiên: token làm việc nhiều máy, người dùng đổi máy quên ko xóa token, kẻ công lợi dụng token tĩnh, tuần tự, dễ đốn có nguy cao - Lỗ hổng kết thúc phiên: khơng có đăng xuất, có khơng hủy token, xóa token khoảng thời gian - Token bị đánh cắp từ phía máy khách: XSS, CSRF lấy token Nguyễn Minh Đức|9 - Không giới hạn phạm vi sử dụng cookie: Máy chủ yêu cầu token qua cookie, thay đổi miền gửi cookie từ miền sang miền cha, gửi đến miền cha gửi đến tất miền => dùng sai mục đích Các biện pháp bảo mật Sinh token phiên “mạnh”: Miền giá trị đủ lớn, ngẫu nhiên, khó đốn, độ dài lớn, khơng có nghĩa, không phụ thuộc vào thời gian Bảo vệ token vịng đời: Token trao đổi an tồn HTTPS (chuyển sang HTTP khơng an tồn) Khơng cho vào URL, cho vào môi trường ẩn dùng POST Thêm đăng xuất: xóa all phiên Set thời gian hết hạn phiên sau khoảng thời gian không dùng người dùng – phiên làm việc Tạo phiên mới, phiên cũ tự xóa Thiết lập chặt chẽ cho cookie miền (domain) đường dẫn path Xác thực lớp với giao dịch quan trọng (CSRF) Ngăn chặn XSS, CSRF Dùng token nhứng ẩn trường ẩn để xác thực số trường hợp đặc biệt Ghi log, Giám sát cảnh báo: Quản lý token thông tin nhạy cảm cần giám sát, ghi log để cánh báo hành động bất thường Cả token không hợp lệ bị vét cạn - Thơng báo cho người dùng bất thường: thiết bị lạ, vị trí lạ, đổi mật - Kết thúc phiên kiểu phản ứng: thấy có bất thường, có dấu hiệu bị cơng yêu cầu xác thực - Yêu cầu xác thực câu truy => làm chậm công Các lỗ hổng cấu hình phần mềm máy chủ web phòng chống Các lỗ hổng cấu hình máy chủ web Cấu hình máy chủ web thiết lập tùy chọn cho phép điều khiển hoạt động máy chủ web, theo có ảnh hưởng đến tất website chạy máy chủ điểm yếu Các tài khoản quản trị ngầm định Các nội dung ngầm định tài khoản root, mk dễ khơng có Nhiều phần máy chủ web xuất xưởng kèm theo nội dung ngầm định Có thể gây nguy hiểm: - Các tính gỡ rối kiểm thử cho người quản trị Nguyễn Minh Đức|10 - Các tính mẫu thiết kế cho cơng việc dùng chung - Một số tính nội bộ, vơ tình để người ngồi truy nhập - Tài liệu hướng dẫn sử dụng, quản trị máy chủ web - Các tính mẫu (Sample features) dành cho người quản trị Liệt kê nội dung thư mục Các phương thức nguy hiểm Khi máy chủ web nhận yêu cầu truy nhập thư mục: - Nếu có (index.html, default.htm, ), trang ngầm định gửi cho trình duyệt; - Nếu khơng tồn trang ngầm định: + Trả thông báo lỗi mã 403 (cấm truy nhập) không cho phép liệt kê thư mục; + Trả danh sách file thư mục cho phép liệt kê thư mục => tìm kiếm thơng tin hữu ích - PUT: cho phép tải file lên máy chủ; - DELETE: cho phép xóa tài nguyên (file/thư mục) - COPY: cho phép chép tài nguyên - MOVE: cho phép chuyển vị trí tài nguyên - SEARCH: cho phép tìm kiếm file/thư mục Chuẩn: GET & POST Bảo mật máy chủ web cấu hình Người giám sát khơng lơ là được, giám sát chặt khâu thiết lập cấu hình Các bước - Tìm hiểu tài liệu để nắm vững phương thức hoạt động máy chủ web sử dụng các thiết lập cấu hình; - Thiết lập tham số cấu hình theo hướng dẫn tăng cường an ninh cho máy chủ ứng dụng web - Đổi tên đổi mật tài khoản quản trị ngầm định (root) Có thể khóa xóa cần - Chặn truy nhập từ mạng công cộng đến giao diện quản trị Giới hạn truy nhập đến giao diện quản trị từ mạng nội địa IP cụ thể ACL tường lửa - Loại bỏ nội dung ngầm định, cần: + Tính cần thiết phải tăng bảo mật + Cấm liệt kê nội dung thư mục, có trang ngầm định index.html, show file tùy trường hợp - Khóa tất phương thức HTTP không sử dụng Nguyễn Minh Đức|11 - Đặt quyền truy nhập vào thư mục: đọc, ghi, không cấp quyền thực Các lỗ hổng phần mềm máy chủ web Lỗ hổng tràn đệm Các lỗ hổng cho phép duyệt đường dẫn Lỗ hổng mã hóa chuẩn hóa Điển hình nghiêm trọng nhất, cho phép tin tặc chèn thực mã độc từ xa, kiểm soát hệ thống (Path traversal vulnerabilities) ứng dụng web thực việc đọc, ghi vào hệ thống file dựa tham số người dùng cung cấp Nếu kiểm sốt khơng chặt, tin tặc đánh cắp mật khẩu, log, liệu nhạy cảm, ghi đè lên liệu quan trọng, chiếm quyền điều khiển hệ thống Biện pháp: hạn chế đọc ghi với tham số cho người dùng cung cấp, loại bỏ //, \\ ; giới hạn truy nhập file Q trình mã hóa chuẩn hóa có nhiều sai sót, gây lỗ hổng: Ví dụ: mã hóa dấy ?, chuyển qua giải mã để đọc file, trình bị lỗi nhầm lẫn nên thành đọc file ? file không hợp lệ nên hệ thống show hết file Đảm bảo an toàn phần mềm máy chủ web Lựa chọn phần mềm có tên tuổi: chất lượng hỗ trợ bị lỗi Cần update thường xuyên, cập nhập vá, cập nhập lỗ hổng Bỏ tính khơng cần thiết, khơng sử dụng Đổi tên tính ngầm định, thành phần khơng cần thiết Quyền hạn chế - tối thiểu Phòng vệ theo chiều sâu – nhiều lớp Các vấn đề biện pháp bảo mật trình duyệt web Các vấn đề bảo mật trình duyệt web - nhóm - liên quan đến phương thức công Mục tiêu - Hệ điều hành bị hack, mã độc đọc không gian nhớ web - Hệ điều hành bị nhiễm mã độc chạy tiến trình nền, mã độc đọc sử khơng gian nhớ - Trình duyệt bị cơng - Các trình cắm trình duyệt bị cơng - Giao tiếp mạng trình duyệt bị chặn bên máy - Quảng cáo, tiếp thị Nguyễn Minh Đức|12 - Ăn cắp thông tin cá nhân - Theo dõi, phân tích sử dụng web người dùng - Cài virut, phần mềm quảng cáo, gián điệp, Trojan, … - Dùng tool, nhấn like, click chuột lừa đảo tính cung cấp trình duyệt chứa nguy bảo mật - Hỗ trợ ActiveX: ActiveX hỗ trợ Microsoft Internet Explorer - Hỗ trợ Java: Tính cho phép chạy chương trình Java thông qua máy ảo JVM - Hỗ trợ trình cắm (Plug-in/Add-on/Extension): mơ đun ngồi cài bổ sung vào trình duyệt để cung cấp thêm nhiều tính mới, tiện ích Tăng giao diện cơng, số mã độc viết dạng trình cắm - Các Cookie: XSS lấy cookie - JavaScript, VBScript (chỉ hỗ trợ Microsoft Internet Explorer): Giúp tăng tính tương tác, bị XSS Các biện pháp đảm bảo an tồn trình duyệt web - nâng cao ý thức, kiến thức người dùng - Mặt kỹ thuật: o Cấm cookie bên thứ o Cho phép cấm: ActiveX, Java, trình cắm cụ thể, cookie, javaScrip o Cấu hình thiết lập an ninh riêng tư o Update trình duyệt o Tiện ích cảnh báo o Cài trình cắm cẩn trọng: giả mạo, cần hiểu rõ chi tiết o Hệ thống có: quét virut, cài đặt plug- in an ninh o Cấu hình thiết lập an ninh riêng tư, cấm vào trái phép CSDL *Các u cầu bảo mật sở liệu, mơ hình tổng quát bảo mật sở liệu lớp bảo mật sở liệu Các yêu cầu bảo mật sở liệu Bảo mật, hay an toàn sở liệu (Database security) tập hợp thủ tục, chuẩn, sách cơng cụ sử dụng để bảo vệ liệu: đảm bảo bí mật – tồn vẹn – sẵn dùng Tính bí mật: xác thực, trao quyền, vật lý, tường lửa Đảm bảo người có quyền truy nhập Tính tồn vẹn: Tính ràng buộc liệu Chỉ người có quyền sửa Nguyễn Minh Đức|13 Tính sẵn dùng: Hạ tầng mạng, lực máy chủ Đảm bảo người dùng hợp lệ truy cập thời điểm Mơ hình tổng qt lớp bảo mật sở liệu Bảo mật sở liệu yếu tố liên quan yếu tố Các nhân tố Con người (people), Phần mềm (Software) Dữ liệu (Data) đe dọa (Threats) loại đe dọa csdl: người (People) – nguy hiểm nhất, mã độc (Malicious code), tai họa công nghệ (Technological disasters) từ tai họa tự nhiên (Natural disasters) rủi ro (Risks) lỗ hổng (Vulnera bilities) loại lỗ hỏng: bao gồm lỗ hổng lỗi người dùng – hay sảy ra, rủi ro cao; lỗ hổng thiết kế lập trình, lỗ hổng phần mềm lỗ hổng cài đặt cấu hình – hay sảy ra, rủi ro cao Mơ hình bảo mật sở liệu tổng quát gồm lớp: lớp người (People), lớp ứng dụng (Applications), lớp mạng (Network), lớp hệ điều hành (Operating system), lớp hệ quản trị sở liệu (DBMS), lớp file liệu (Data files) lớp liệu (Data) Khâu thực (tương ứng với lớp) bảo mật sở liệu gồm: Identification (Nhận dạng rủi ro), Assessment (Đánh giá rủi ro), Design (Thiết kế kiểm soát), Implementation (Áp dụng kiểm soát), Evaluation (Đánh giá hiệu áp dụng) Auditing (Kiểm toán) Kết khâu trước dùng để điều chỉnh khâu sau Nguyễn Minh Đức|14 Các lớp bảo mật sở liệu Con người - Hạn chế truy nhập vật lý đến phần cứng hệ thống tài liệu; - Xác thực người dùng: thẻ nhận dạng (ID card), PIN, mật khẩu, sinh trắc học - Đào tạo người quản trị, người dùng ý thức bảo mật biện pháp bảo mật - Thiết lập sách thủ tục kiểm soát an ninh Ứng dụng - Xác thực người dùng truy nhập - Áp dụng xác quy trình xử lý cơng việc; - Đăng nhập lần (Single Sing On) cho máy chủ sở liệu, ứng dụng, website có liên kết - Tường lửa; - Dụng VPN bảo mật thông tin liệu đường truyền; - Biệp pháp xác thực - Xác thực người dùng; - Phát xâm nhập; Mạng HĐH Nguyễn Minh Đức|15 File data Data - Áp dụng sách quản lý mật chặt chẽ; - Tài khoản người dùng - Quyền truy nhập file; - Giám sát truy nhập file - Kiểm tra liệu; - Các ràng buộc liệu; - Mã hóa liệu 10.Bảo mật đối tượng CSDL Bảo mật đối tượng sở liệu Các đối tượng bản: người dùng, bảng, khung nhìn, thủ tục hàm Người truy cập đến đối tượng cịn lại thơng qua quyền sách nên cần bảo vệ đối tượng lại Các quyền truy nhập: EXECUTE (quyền thực hiện) áp dụng với thủ tục, hàm trigger SELECT (chọn), INSERT (chèn), UPDATE (cập nhật), DELETE (xóa) áp dụng bảng, khung hình CREATE (tạo mới), ALTER (sửa), DROP áp dụng với hầu hết CSDL Người dùng gán (hệ truyền thống) vào – số nhóm vài trị (role) gồm loại: nhóm máy chủ (Server roles) áp dụng hệ quản trị sở liệu nhóm sở liệu (Database role) áp dụng sở liệu người cấp quyền đến – n file filr truy nhập từ – n người dùng Cấp quyền truy nhập giao diện – từ chối, hủy truy nhập: Ví dụ sở liệu SQL Server: - GRANT ON TO : cấp quyền - DENY ON TO : từ chối - REVOKE ON FROM : hủy quyền truy nhập 11.Sao lưu khơi phục dự phịng CSDL Sao lưu sở liệu (Database backup) thao tác tạo phần toàn sở liệu Bản tạo lưu phương tiện lưu trữ với sở liệu sử dụng phương tiện lưu trữ riêng, đĩa cứng, băng từ, ổ mạng, đám mây Sao lưu định kỳ khơng tùy theo sách Mục đích: đảm bảo tính sẵn đùng tồn vẹn Nguyễn Minh Đức|16 Tùy theo yêu tố: - Yêu cầu đảm bảo an toàn liệu; - Khả lưu trữ; - Tải lên hệ thống thực lưu; - Kết hợp lưu chỗ (on-site) lưu ngồi (off-site) Khơi phục dự phịng sở liệu (Database restore) thao tác khôi phục lại sở liệu sau cố với phần toàn loại cố: Hệ quản trị sở liệu (Instance failures): lỗi bên hệ quản trị CSDL, hệ điều hành => hỏng, mát liệu ứng dụng giao dịch (Application/Transaction failures): Lỗi xử lý liệu => hỏng, mát phương tiện lưu trữ (Media failures): Lỗi hỏng phần cứng => phần toàn Sao lưu sở liệu Theo đối tượng, có dạng lưu: lưu sở liệu (Database backup), lưu log giao dịch (Transaction log backup) lưu file (File backup) Theo mức độ, có dạng: lưu tồn (Full backup) lưu phần thay đổi (Incremental/Differential backup) Toàn Sao lưu toàn thời điểm CSDL hoạt động - lần lưu Ưu: Khôi phục nhanh Nhược: tốn time dung lượng Phần thay đổi Chỉ lưu phần thay đổi CSDL kể từ lần lưu gần Thời gian ngắn, dung lượng Thời gian khơi phực dài Các mơ hình khơi phục Mơ hình khơi phục (Recovery) thuộc tính sở liệu điều khiển phương pháp ghi log giao dịch, có hay khơng u cầu ghi log kiểu khôi phục sở liệu hỗ trợ Microsoft SQL Server hỗ trợ mơ hình khôi phục Simple Khôi phục đơn giản Full Chỉ cho phép số thao tác tạo log => không hỗ trợ lưu, không hỗ trợ khôi phục theo thời điểm theo trang Hỗ trợ khôi phục file - với file thứ cấp (chỉ đọc) Tất thao tác ghi log đầy đủ, có hỗ trợ lưu log, Nguyễn Minh Đức|17 Khôi phục đầy đủ Bulk_log Khôi phục theo khối khôi phục thao tác (Theo thời điểm, theo trang, theo file) Giống Full Không hỗ trợ khôi phục theo thời điẻm thao tác ghi log tối thiểu Thực lưu BACKUP DATABASE { database_name | @database_name_var } TO [ WITH { DIFFERENTIAL | đó: ::= { { logical_device_name | @logical_device_name_var } | { DISK | TAPE | URL} = { 'physical_device_name' | @physical_device_name_var } } Ví dụ: BACKUP DATABASE test_db to DISK = 'D:\backups\test_db.bak' thực lưu sở liệu có tên "test_db" file đĩa "D:\backups\test_db.bak" Sao lưu log giao dịch lưu file File log giao dịch (transaction log) lưu dãy ghi log, lưu trữ ghi khứ thay đổi thực Sao lưu định kỳ - khống chế kích thước Tùy vào kiểu ghi log – mức độ phôi phục khác Sao lưu file # CSDL lưu nhiều file cụ thể - giảm thời gian khơng phải lưu tồn Các kiểu lưu file: Full (sao lưu toàn bộ), Partial (sao lưu phần) Differential (chỉ lưu thay đổi so với lần lưu trước đó) Kiểu lưu Differential áp dụng với hai kiểu Full Partial An toàn liệu lưu Dữ liệu lưu lớn, cần lên lịch dọn dẹp (ghi đè, xóa…) để đảm bảo an toàn Cơ chế bảo vệ file lưu: dùng mật cho file phần cứng, mã hóa, lưu ngồi Kết hợp nén mã hóa để giảm kích thước Sao lưu off-site lưu trang thiết bị lưu trữ khác - an tồn với cố tồn nhà, thành phố Off-site bị đánh cắp: mã hóa đường truyền + dùng người tin cậy Nguyễn Minh Đức|18 Khôi phục sở liệu việc khôi phục lại phần tồn CSDL sở liệu có cố - khó, cần người có kinh nghiệm Dựa vào dạng file: toàn CSDL, file lưu CSDL, file log giao dịch CSDL B1: xác định kiểu khơi phục phù hợp: Tồn Một phần (đến thời điểm đó) Khơi phục theo giao dịch - chi tiết theo giao dịch - cần bên thứ Khôi phục xong nhớ kiểm tra lại Tương tự lưu, hệ quản trị CSDL hỗ trợ qua giao diện quản trị dòng lệnh RESTORE DATABASE { database_name | @database_name_var } [ FROM [ , n ] ] [ WITH { [ RECOVERY | NORECOVERY | STANDBY = {standby_file_name | @standby_file_name_var } ] |, [ , n ] | , | , | , | , | , } [ , n ] ] 12.Khái quát kiểm toán CSDL dạng kiểm toán CSDL Kiểm toán sở liệu việc giám sát hành vi người dùng thực sở liệu xem xét hành vi có phù hợp với sách quản trị bảo mật sở liệu quan, tổ chức hay không Mục đích: giám sát – tìm ngun nhân sau cố - quan trọng Giám sát – bắt buộc + liên tục – thu thập liệu cho kiểm tốn Có thể thực chỗ, phân tán máy hệ thống kiểm toán độc lập Các dạng kiểm toán sở liệu - Kiểm tốn đăng nhập/đăng xuất sở liệu Thơng tin ghi lại: username, địa IP máy khách, tên ứng dụng máy khách, thời gian, trạng thái Giám sát hoạt động đăng nhập đăng suất VD ghi nhận trang thái đăng nhập không thành công vài lần tài khoản, sai nhiều lần tiến hành khóa Dùng tigger để ghi log đăng nhập – đăng xuất sử dụng ghi log có sẵn SQL Server - Kiểm toán nguồn sử dụng sở liệu Nguyễn Minh Đức|19 Gồm: địa IP, tên ứng dụng, nút mạng kết nối tới csdl Ứng dụng cho hoạt động: kết nối, đăng nhập vào csdl, thực lệnh SQL - Kiểm toán hoạt động DDL (ngơn ngữ miêu tả liệu) Kiểm tốn việc thay đổi lược đồ (schema), cấu trúc bảng sở liệu Chúng ảnh hưởng lớn tới hiệu sở dữu liệu Tự giám sát giám sát độc lập - Kiểm toán lỗi CSDL Giám sát lỗi sinh ra, tin tặc chèn vào để phát cơng - Kiểm tốn thay đổi mã nguồn thủ tục, hàm, triger Giám sát ghi log thay đổi mã nguồn thủ tục, hàm triger Gồm: thực sửa, nội dung thay đổi, thời gian sửa Có thể sửa dụng tính CSDL - Kiểm tốn thay đổi đặc quyền thơng tin truy nhập Giám sát thay đổi thông tin người dùng quyền truy cập Rất quan trọng Gồm: - Thêm xóa người dùng, tài khoản, vai trò; - Thay đổi ánh xạ người dùng vai trò; - Thay đổi đặc quyền (có thể người dùng vai trị); - Thay đổi mật khẩu; - Thay đổi thuộc tính an ninh máy chủ, sở liệu, lệnh, đối trượng CSDL - Kiểm toán việc thay đổi liệu nhạy cảm Ghi log lại thông tin nhạy cảm trước sau thay đổi Chú ý: Phát sinh liệu lớn rò rỉ liệu nhạu cảm Nguyễn Minh Đức|20 Bài tập Like: tìm kiếm theo mẫu %: thay cho ký tự Khơng kiểm tra ký tự truy vấn SQL injection – không kiểm tra liệu đầu vào: "SELECT * FROM users WHERE name = '" + userName + "';" Lấy username => thay username = a' or 't'='t SELECT * FROM users WHERE name = 'a' or 't'='t'; Vì ‘t’ =’t’ ln => bắt buộc phải chọn người dùng hợp lệ Trong hầu hết SQL server cho phép thực nhiều truy vấn lúc với lần gọi, nhiên số SQL API mysql_query php lại khơng cho phép điều lý bảo mật Điều ngăn cản tin tặc công cách sử dụng câu lệnh riêng rẽ mà không ngăn cản tin tặc thay đổi từ cú pháp truy vấn Có thể xóa tất người dùng từ bảng users SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM data WHERE 't' = 't'; Xử lý không kiểu Lỗi SQL injection - định nghĩa đầu vào liệu không rõ ràng thiếu bước kiểm tra lọc kiểu liệu đầu vào Ví dụ trường số khơng kiểm tra đầu vào: "SELECT * FROM data WHERE id = " + a_variable + ";" Id không kiểm tra trường nhập vào – xóa người dùng 1: 1;DROP TABLE users SELECT * FROM data WHERE id=1;DROP TABLE users; Dạng công sử dụng câu lệnh SELECT Đoạn mã: Nguyễn Minh Đức|21 Nhập: ' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '=' (*) Truy vấn không thành công => thực lệnh sau từ khóa UNION Xóa: ' DROP TABLE T_AUTHORS -Việc cần làm tìm số trường câu truy vấn trang, sở sử dụng câu lệnh UNION SELECT để ghép liệu muốn trích xuất vào câu truy vấn gốc trang Số trường UNION SELECT phải số trường câu truy vấn gốc trang Đồng thời, kiểu liệu trường UNION SELECT phải tương thích với kiểu liệu trường tương ứng câu truy vấn gốc trang Thực hành thầy Dậu: - Tìm số trường câu truy vấn trang: + sam%' order by ; , số thứ tự trường Lần lượt thử với 1, 2, 3,… quan sát kết trang không hiển thị kết lần thử cuối cho kết số trường có câu truy vấn + sam%' union select ; , 1, 2, 3,… '1', '2', '3',… Tăng dần số trường trang không hiển thị kết báo lỗi thực lần thử cuối cho kết cho biết số trường có câu truy vấn - Hiển thị thông tin hệ quản trị CSDL hệ điều hành: + ssss' union select '', @@version, - Trích xuất danh sách bảng CSDL: + ssss' union select '', name, from sys.objects where type='u'; Trích xuất danh sách trường bảng: + ssss' union select '', a.name, from sys.columns a inner join sys.objects b on a.object_id = b.object_id where b.name='tbl_users'; + Thay tên bảng tbl_users bẳng bảng khác có mục để hiển thị danh sách trường bảng - Trích xuất liệu bảng: + ssss' union select full_name, username+' '+password, from tbl_users; + Thay tên bảng danh sách trường để trích xuất lữ liệu bảng khác có mục + Lưu ý, số trường câu truy vấn nhiều số trường câu truy vấn gốc cần ghép trường phép nối xâu để số trường Nguyễn Minh Đức|22 UNION SELECT phải số trường câu truy vấn gốc trang kiểu liệu trường UNION SELECT phải tương thích với kiểu liệu trường tương ứng câu truy vấn gốc trang SELECT * FROM tbl_accounts WHERE username='aaaa' OR 1=1 ' AND password='aaaa' Truy nhập vào tài khoản aaaa 1=1 ln Xóa: Samsung Galaxy S8';DELETE FROM tbl_products; câu lệnh thành: SELECT * FROM tbl_products WHERE keyword like '%Samsung Galaxy S8';DELETE FROM tbl_products; %' Tương tự với: UPDATE, INSERT Chèn thêm: Galaxy S8';INSERT INTO tbl_administrators (username, password) VALUES ('attacker', 'abc12345'); Nguyễn Minh Đức|23