Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
1,08 MB
Nội dung
Bảo mật ứng dụng Web – Đồ án môn học “Công nghệ mạng” ĐẠI HỌC QUỐC GIA TP HCM TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA ĐIỆN TỬ VIỄN THƠNG · ¶ ĐỀ TÀI MƠN HỌC “CƠNG NGHỆ MẠNG” ĐỀ TÀI : BẢO MẬT ỨNG DỤNG WEB GVHD: Thầy NGUYỄN ANH VINH SVTH: NGUYỄN CÔNG MINH TÔN VI KIN TRẦN HỒ NAM TP Hồ Chí Minh – Tháng 11/2008 -0- 0520043 0520039 0520045 Bảo mật ứng dụng Web – Đồ án môn học “Công nghệ mạng” Mục lục MỤC LỤC 1 TÌM HIỂU VỀ ỨNG DỤNG WEB 1.1 Ứng dụng Web 1.2 Domain – Hosting 1.3 Web Server 1.4 Ngôn ngữ lập trình Web 1.5 Các hệ sở liệu BẢO MẬT ỨNG DỤNG WEB 10 2.1 Bảo mật 10 2.2 Từ phía người cơng (Hacker) 12 2.2 Từ phía người phịng thủ (Administrator) 18 TÀI LIỆU THAM KHẢO 22 NHẬN XÉT CỦA GIẢNG VIÊN 23 -1- Bảo mật ứng dụng Web – Đồ án mơn học “Cơng nghệ mạng” TÌM HIỂU VỀ ỨNG DỤNG WEB 1.1 Ứng dụng Web gì? Trong kỹ thuật phần mềm, Ứng dụng web (hay web application) trình ứng dụng mà tiếp cận qua web thông qua mạng Internet hay Itranet Ứng dụng web phổ biến nhờ vào có mặt vào nơi đâu chương trình Khả cập nhật bảo trì ứng dụng Web mà phân phối cài đặt phần mềm hàng ngàn máy tính lý cho phổ biến Ứng dụng web dùng để thực Webmail, bán hàng trực tuyến, đấu giá trực tuyến, wiki, diễn đàn thảo luận, Weblog, MMORPG, Hệ quản trị quan hệ khách hàng nhiều chức khác Một ưu đặc biệt việc xây dựng ứng dụng Web để hỗ trợ tính chuẩn trình duyệt chúng hoạt động mong muốn hệ điều hành hay phiên hệ điều hành cài máy khách cho trước Thay tạo chương trình khách cho MS Windows, Mac OS X, GNU/Linux, hệ điều hành khác, ứng dụng viết lần triển khai nơi Tuy nhiên, thực không ổn định HTML, CSS, DOM đặc tính trình duyệt khác gây rắc rối việc phát triển hỗ trợ ứng dụng web Thêm vào đó, khả cho người dùng điều chỉnh nhiều cài đặt hiển thị cho trình duyệt họ (như chọn kích thước font, màu sắc, kiểu chữ, tắt tính script) can thiệp vào ổn định ứng dụng web Cấu trúc ứng dụng web Dù có nhiều biến thể, ứng dụng Web thông thường cấu trúc ứng dụng ba lớp Ở dạng phổ biến nhất, trình duyệt Web lớp thứ nhất, máy sử dụng vài công nghệ nội dung Web động (như ASP, ASP.NET, CGI, ColdFusion, JSP/Java, PHP, Python, Ruby On Rails) lớp giữa, sở liệu lớp thứ ba Trình duyệt gửi yêu cầu đến lớp giữa, lớp phục vụ cách tạo truy vấn cập nhật sở liệu tạo giao diện người dùng 1.2 Domain – Hosting Như biết Internet mạng máy tính tồn cầu , hàng nghìn mạng máy tính từ khắp nơi nối lại tạo nên Khác với cách tổ chức theo cấp : nội hạt, liên tỉnh, quốc -2- Bảo mật ứng dụng Web – Đồ án môn học “Công nghệ mạng” tế mạng viễn thông mạng thoại chẳng hạn, mạng Internet tổ chức có cấp, mạng máy tính dù nhỏ, dù to nối vào Internet bình đẳng với Do cách tổ chức nên Internet có cấu trúc địa , cách đánh địa đặc biệt , khác cách tổ chức địa mạng viễn thông Địa Internet (IP) sử dụng (IPv4) có 32 bit chia thành Octet ( Octet có bit , tương đương byte ) cách đếm từ trái qua phải bít bít 32, Octet tách biệt dấu chấm (.) biểu dạng thập phân đầy đủ 12 chữ số Ví dụ địa Internet : 146.123.110.224 (Địa IP tương lai sử dụng IPv6 có 128 bit dài gấp lần IPv4 Version IPv4 có khả cung cấp 232 = 294 967 296 địa Còn Version IPv6 có khả cung cấp 128 địa ) Do người sử dụng nhớ địa dạng chữ số dài nối mạng khó khăn cạnh địa IP có thêm tên mang ý nghĩa đó, dễ nhớ cho người sử dụng kèm mà Internet gọi Tên Miền Ví dụ: Máy chủ Web Server VDC chứa Báo Quê hương có địa 203.162.000.012 , tên Miền home.vnn.vn Thực tế người sử dụng khơng cần biết đến địa IP mà cần nhớ tên Miền truy nhập Vậy tên Miền danh từ dịch theo kiểu nghĩa từ (Word by Word) từ tiếng anh (Domain name) Thực chất tên miền nhận dạng vị trí máy tính mạng Internet nói cách khác tên miền tên mạng lưới, tên máy chủ mạng Internet Do tính chất có Internet, ta đăng ký Domain name mà người khác chủ sở hữu Cấu tạo tên miền Tên miền bao gồm nhiều thành phần cấu tạo nên cách dấu chấm (.) ví dụ home.vnn.vn tên miền máy chủ Web VDC Thành phần thứ "home" tên máy chủ , thành phần thứ hai "vnn" thường gọi tên miền mức hai (second domain name level), thành phần cuối "vn" tên miền mức cao (top level domain name) 1.2.1 Tên miền mức cao (Top- level Domain "TLD") : Bao gồm mã quốc gia nước tham gia Internet quy định hai chữ theo tiêu chuẩn ISO -3166 Việt nam VN, Anh quốc UK v.v lĩnh vực dùng chung (World Wide Generic Domains), có dùng chung cho toàn cầu dùng Mỹ 1- COM : Thương mại ( Commercial) 2- EDU : Giáo dục ( Education ) 3- NET : Mạng lưới ( Network ) -3- Bảo mật ứng dụng Web – Đồ án môn học “Công nghệ mạng” 4- INT : Các tổ chức quốc tế ( International Organisations ) 5- ORG : Các tổ chức khác ( other orgnizations ) 6-MIL :quân (Military) 7-GOV:Chính phủ (Government) 1.2.2 Tên miền mức hai ( Second Level ) : Đối với quốc gia nói chung tên miền mức hai Tổ chức quản lý mạng quốc gia định nghĩa, định nghĩa khác đi, nhiều hay thông thường quốc gia định nghĩa Lĩnh vực kinh tế, xã hội tương tự lĩnh vực dùng chung nêu Các loại Domain name Domain name cấp cao Domain name cấp cao tên miền bạn đăng ký trực tiếp với nhà cung cấp Domain name Theo sau phần tên bạn tùy chọn phần TLD (Top Level Domain) có dạng: com, net, org, gov, edu, info, tv, biz, TLD kết hợp với ký hiệu viết tắt quốc gia: com.vn, net.vn, org.vn, gov.vn, Ví dụ: www.vnnetsoft.com www.yahoo.com www.vnn.vn Được coi tên miền cấp cao Các tên miền cấp cao thể chuyên nghiệp uy tín kinh doanh Internet doanh nghiệp Domain name thứ cấp Là tất loại Domain name cịn lại mà domain phải phụ thuộc vào Domain name cấp cao Để đăng ký Domain name kiểu này, thông thường bạn phải liên hệ trực tiếp với người quản lý Domain name cấp cao Ví dụ: http://demo.vnnetsoft.com http://home.vnn.vn Được coi tên miền thứ cấp Web –Hosting: -4- Bảo mật ứng dụng Web – Đồ án môn học “Công nghệ mạng” Web Hosting nơi lưu trữ tất trang Web, thơng tin, tư liệu, hình ảnh Website máy chủ Internet, Web Hosting đồng thời nơi diễn tất hoạt động giao dịch, trao đổi thông tin Website với người sử dụng Internet hỗ trợ phần mềm Internet hoạt động Nói cách đơn giản, Web Hosting tương đương với trụ sở làm việc doanh nghiệp đời thường Các yêu cầu tính Web Hosting? • • • • • Web Hosting phải có dung lượng đủ lớn (tính theo MBytes) để lưu giữ đầy đủ thơng tin, liệu, hình ảnh, Website Phải hỗ trợ truy xuất máy chủ giao thức FTP để cập nhật thông tin Phải có bandwidth (băng thơng) đủ lớn để phục vụ hoạt động giao dịch, trao đổi thông tin Website Hỗ trợ cơng cụ lập trình phần mềm Internet công cụ viết sẵn để phục vụ hoạt động giao dịch Website gửi mail, upload qua trang Web, Hỗ trợ đầy đủ dịch vụ E-mail POP3 E-mail, E-mail Forwarding, 1.3 Web Server: Web Server máy chủ có dung lượng lớn, tốc độ cao, dùng để lưu trữ thông tin ngân hàng liệu, chứa website thiết kế với thông tin liên quan khác (các mã Script, chương trình, file Multimedia) Web Server có khả gửi đến máy khách trang Web thông qua môi trường Internet (hoặc Intranet) qua giao thức HTTP - giao thức thiết kế để gửi file đến trình duyệt Web (Web Browser), giao thức khác Tất Web Server có địa IP (IP Address) có Domain Name Giả sử bạn đánh vào Address trình duyệt bạn dịng http://www.abc.com sau gõ phím Enter bạn gửi yêu cầu đến Server có Domain Name www.abc.com Server tìm trang Web có tên index.htm gửi đến trình duyệt bạn Bất kỳ máy tính trở thành Web Server việc cài đặt lên chương trình phần mềm Server Software sau kết nối vào Internet Khi máy tính bạn kết nối đến Web Server gửi đến yêu cầu truy cập thông tin từ trang Web đó, Web Server Software nhận yêu cầu gửi lại cho bạn thông tin mà bạn mong muốn Giống phần mềm khác mà bạn cài đặt máy tính mình, Web Server Software ứng dụng phần mềm Nó cài đặt, chạy máy tính dùng làm Web Server, nhờ có chương trình mà người sử dụng truy cập đến thơng tin trang Web từ máy tính khác mạng (Internet, Intranet) Web Server Software cịn tích hợp với CSDL (Database), hay điều khiển việc kết nối vào CSDL để truy cập kết xuất thông tin từ CSDL lên trang Web truyền tải chúng đến người dùng -5- Bảo mật ứng dụng Web – Đồ án môn học “Công nghệ mạng” Server phải hoạt động liên tục 24/24 giờ, ngày tuần 365 ngày năm, để phục vụ cho việc cung cấp thơng tin trực tuyến Vị trí đặt server đóng vai trị quan trọng chất lượng tốc độ lưu chuyển thông tin từ server máy tính truy cập 1.4 Ngơn ngữ lập trình Web 1.4.1 PHP Năm 1994 rasmus lerdorf dua doạn perl script vào trang web đề theo giỏi đọc tài liệu ơng.dần dẩn người ta thích đoạn cript bác đầu san xuất gói cơng cụ mang ten personal home pages dó tên php Ông viết số chế nhúng kết hợp với cơng cụ khác để phân tích biểu mẩu html hay phiên dịch biểu mẫu dạc tên PHP2 gọi PHP/FI PHP/FI vào năm 1995 Nhóm phát triển rasmus lerdorf , andigutmans, Zeev suraski loại bỏ điểm yếu php2 thêm số hàm API cho phép lập trình viên khác bổ xung tính ngơn ngử để viết module cho vào tháng 11/1997 phiên php3 đời Cuối năm 1998, PHP có khoảng 10 triệu người sử dụng hàng trăm triệu Website báo cáo có sử dụng PHP Vào năm 1999 phiên php4 dới vói tính nỗi trội.hỗ trợ nhiều web server phiên http 1.4.2 HTML (HyperText Markup Language): Đây ngôn ngữ đơn giản sử dụng tài liệu siêu văn tài liệu văn bình thường có chứa thành phần đặc biệt gọi thẻ (hoặc cặp thẻ) đánh dấu Dựa theo cặp thẻ mà trình duyệt biết phải thực Ví dụ đơn giản: Hãy lấy ví dụ đơn giản sau: Xin chào, LGVT Các bạn ý: dịng chữ Xin chào, tơi LGVT đặt cặp chữ "" "" Cặp chữ ký hiệu cặp thẻ ngôn ngữ HTML, mà biên dịch ra, trình duyệt hiểu là: Khi gặp thẻ "", phải có trách nhiệm in tất chữ sau thành chữ đậm gặp thẻ "" Trong HTML, thẻ tồn đơn lẻ, tồntại dạng cặp thẻ Nếu tồn dạng cặp thẻ bắt đầu gọi thẻ mở thẻ kết thúc gọi thẻ đóng Để soạn thảo file HTML, sử dụng trình soạn thảo nào, chẳng hạn NotePad hay chí Turbo Pascal miễn sau bạn Save As dạng đuôi *.htm Cấu trúc thẻ HTML bao gồm: - Dấu "" Ví dụ: "" • Các thành phần tài liệu XML, khác thành phần gốc nằm cặp thẻ gốc phải lồng cách hợp lý, tức khơng có thành phần phủ, tập hợp thẻ không phép chồng lên thẻ kia, tập phải nằm tập hợp lớn • Các cặp thẻ phải viết xác kể chữ hoa hay chữ thường • Các giá trị thuộc tính phải nằm hai ngoặc kép Ví dụ: hide=true khơng hợp lệ, mà phải hide="true" 1.4.4 ASP (active server pages) Vào thập niên 90 Kì thuật microsoft kết hợp html với đoạn script, phần sử lí server file gọi ASP Về chất, ta coi ASP ngôn ngữ thông dịch Một trang ASP sử dụng HTML, JScript VBScript Qua đoạn mã nhúng này, ASP truy cập đến thành phần phía server Các thành phần viết ngơn ngữ hỗ trợ thành phần COM Microsoft Các thành phần viết ngơn ngữ hỗ trợ thành phần COM Microsoft Ưu điểm : - Nó làm mà máy chủ làm với thành phần COM Sau thi hành, ASP sản sinh trang Web có khn dạng HTML trả cho Web server - Soạn thào thêm nội dung vào website linh động - Đáp ứng truy vấn người dùng dử liệu gởi từ HTML - Giảm thiểu lưu thông mạng - Trả trang HTML nên người dùng xem trình duyệt web Nhược điểm: - Một bất lợi lớn ASP hoạt động họ Web server Microsoft (bao gồm PWS Win9x hay IIS WinNT/2000/XP) 1.4.5 Javascript : Theo phiên hành, ngơn ngữ lập trình kịch dựa đối tượng phát triển từ ý niệm nguyên mẫu Ngôn ngữ dùng rộng rãi cho trang web, dùng để tạo khả viết script sử dụng đối tượng nằm sẵn ứng dụng Nó vốn phát triển Brendan Eich Hãng truyền thông Netscape với tên Mocha, sau đổi tên thành LiveScript, cuối thành JavaScript JavaScript có cú pháp tương tự C, gần với Self Java .js phần mở rộng thường dùng cho tập tin mã nguồn JavaScript -8- Bảo mật ứng dụng Web – Đồ án môn học “Công nghệ mạng” Phiên JavaScript phiên 1.5, tương ứng với ECMA-262 ECMAScript phiên chuẩn hóa JavaScript Trình duyệt Mozilla phiên 1.8 beta có hỗ trợ không đầy đủ cho E4X - phần mở rộng cho JavaScript hỗ trợ làm việc với XML, chuẩn hóa ECMA-357 JavaScript dùng để thực số tác vụ thực với HTML kiểm tra thông tin nhập vào, tự động thay đổi hình ảnh, Ở Việt Nam, JavaScript cịn ứng dụng để làm gõ tiếng Việt JavaScript sử dụng tập tin PDF Adobe Acrobat Adobe Reader JavaScript ngôn ngữ lập trình dựa nguyên mẫu với cú pháp phát triển từ C 1.5 Các hệ sở dử liệu: Cơ sở dử liệu hệ thống tập hợp tập tin dược thiết kế nhầm giảm thiểu việc lập lại dử liệu Các tập tin sở dử liệu thành phần chương trình nhằm tạo lập quản lí truy xuất tập tin sở dử liệu Hệ quản trị sở dử liệu (database managements system ) viết tắc DBMS phần mềm cơng cụ có sẳn số nhà sản xuất phần mềm cung cấp 1.5.1 My SQL: MySQL phần mềm quản trị CSDL mã nguồn mở, miễn phí nằm nhóm LAMP (Linux - Apache -MySQL - PHP) Một số đặc điểm MySQL MySQL phần mềm quản trị CSDL dạng server-based (gần tương đương với SQL Server Microsoft) MySQL quản lý liệu thông qua CSDL, CSDL có nhiều bảng quan hệ chứa liệu MySQL có chế phân quyền người sử dụng riêng, người dùng quản lý nhiều CSDL khác nhau, người dùng có tên truy cập (user name) mật tương ứng để truy xuất đến CSDL Khi ta truy vấn tới CSDL MySQL, ta phải cung cấp tên truy cập mật tài khỏan có quyền sử dụng CSDL Nếu khơng, khơng làm 1.5.2 SQL : Mơ hình sở liệu (CSDL) quan hệ - RDBMS, E.F Codd đưa vào đầu thập kỷ 70 Từ đến nay, liên tục phát triển trở thành mơ hình CSDL phổ biến bậc Mơ hình quan hệ gồm thành phần sau: Tập hợp đối tượng / mối quan hệ Tập hợp xử lý tác động tới quan hệ Ràng buộc liệu đảm bảo tính xác quán SQL (Structured Query Language, đọc "sequel") tập lệnh truy xuất CSDL quan hệ Ngôn ngữ SQL IBM sử dụng hệ quản trị CSDL System R vào năm 70 Hệ ngôn ngữ SQL (SEQUEL2) IBM công bố vào tháng 11 năm 1976 Năm 1979, tập đoàn Oracle giới thiệu thương phẩm SQL SQL cài đặt hệ quản trị CSDL DB2 IBM SQL/DS Ngày nay, -9- Bảo mật ứng dụng Web – Đồ án mơn học “Cơng nghệ mạng” 2.2 Từ phía người công Phương thức công *Thu thập thông tin chung: Đây việc cần phải làm, ta tìm kiếm thơng tin xung quanh Website -Chủ sở hữu trang Web, đội ngũ quản trị, điều hành -Địa IP, máy chủ DNS Server -Môi trường mạng, hệ điều hành, phần mềm máy chủ Web, ngôn ngữ lập trình, hệ CSDL -Các cổng dịch vụ tương ứng mở Server - Số lượt truy cập, băng thông hàng tháng Website *Khảo sát ứng dụng Web: bước tập trung nghiên cứu Website -Website sử dụng ứng dụng Web nào? -Mã nguồn mở hay đóng? Phiên bản? - 13 - Bảo mật ứng dụng Web – Đồ án môn học “Công nghệ mạng” -Nếu mã nguồn mở download source code để phân tích kiểm tra, tìm đọc thơng tin bug exploit từ trang chủ sản phẩm *Dị tìm lỗi: Dị tìm lỗi tự động: Dùng cơng cụ qt dị lỗi Website Scrawlr, MaxQ, Selenium, Acunetix Web Vulnerability Scanner, … Giao diện Acunetix Web Vulnerability Scanner Dị tìm lỗi tay: Vận dụng kiến thức lập trình, hệ điều hành, bảo mật mạng máy tính, “người dùng tinh nghịch” hacker tiến hành thao tác dò lỗi trực tiếp website, phần nhập liệu đầu vào *Khai thác lỗi để công: Đây giai đoạn quan trọng để phá hoại chiếm quyền điều khiển Website Một vài cách thức công phổ biến -SQL Injections -Session Hijacking - Local Attack -Dùng loại trojan, virus đánh cắp mật admin - 14 - Bảo mật ứng dụng Web – Đồ án môn học “Công nghệ mạng” -DoS DDoS +SQL Injections Khi triển khai ứng dụng web Internet, nhiều người nghĩ việc đảm bảo an toàn, bảo mật nhằm giảm thiểu tối đa khả bị công từ tin tặc đơn tập trung vào vấn đề chọn hệ điều hành, hệ quản trị sở liệu, webserver chạy ứng dụng, mà quên thân ứng dụng chạy tiềm ẩn lỗ hổng bảo mật lớn Một số lỗ hổng SQL injection Tại Việt Nam, qua thời kì quản trị website lơ việc quét virus, cập nhật vá lỗi từ phần mềm hệ thống, việc chăm sóc lỗi ứng dụng lại quan tâm Đó lí thời gian vừa qua, khơng website Việt Nam bị công đa số lỗi SQL injection Vậy SQL injection ? SQL injection kĩ thuật cho phép kẻ công lợi dụng lỗ hổng việc kiểm tra liệu nhập ứng dụng web thông báo lỗi hệ quản trị sở liệu để "tiêm vào" (inject) thi hành câu lệnh SQL bất hợp pháp (không người phát triển ứng dụng lường trước) Hậu tai hại cho phép kẻ cơng thực thao tác xóa, hiệu chỉnh, … có toàn quyền sở liệu ứng dụng, chí server mà ứng dụng chạy Lỗi thường xảy ứng dụng web có liệu quản lí hệ quản trị sở liệu SQL Server, MySQL, Oracle, DB2, Sysbase +Session Hijacking Thế Session Hijacking: Session Hijacking sử dụng session người dùng đó, tạo kết nối hợp lệ phương thức không hợp lệ Phương thức mời bạn đọc tiếp phần Để dễ hiểu, ta đưa ví dụ này: Pc A Pc B kết nối thành công với nhau, kẻ công chiếm lấy session ID Pc A để kết nối với PC B, dĩ nhiên lúc Pc B cho kẻ công Pc A, cho kẻ cơng có quyền thực hành động mà Pc A thực Mở rộng: Một admin website đăng nhập vào hệ thống quản lí website Một cookie tạo kèm theo Session ID user Admin lúc .Vì lí đó, admin khơng dùng computer nữa, khơng logout khỏi trình điều khiển, nghĩa cookies Session ID hiệu lực Bằng cách đó, bạn đốn session ID này, bạn có quyền truy cập vào hệ thống quản lí website với quyền hạn Admin HTTP giao thức có tính stateless cho nên, thơng tin client (trình duyệt) server (web server) thường kết thúc nhanh tốt connection tắt bỏ sau quy trình chuyển gởi thơng tin hồn tất Vì vậy, Session tạo khơng kiểm tra cịn tồn hay không, user bấm vào nút logout, xóa bỏ cookies Trừ phi web server kiểm tra xem Session cịn sống hay khơng sau khoảng thời gian định sẳn, pingsession HVA ví dụ Sự cần thiết Session ID: Hãy tưởng tượng bạn vào website đó, VNDEV chẳng hạn, bạn đăng nhập thành công Nhưng lần muốn trả lời đó, bạn phải đăng - 15 - Bảo mật ứng dụng Web – Đồ án môn học “Công nghệ mạng” nhập lại, bất tiện Session ID sinh để khắc phục bất tiện Với session ID tạo riêng cho user kết nối tới website đó, web server dựa vào session ID để nhận user, chấp nhận cho user thực hành động mà user quyền mà xác nhận lần qua lần khác Một cookies: Có nhiều loại cookies, có loại bạn cần tìm hiểu persistent cookies non-persistent cookies -Persistent cookies loại cookies tồn bạn tắt trình duyệt Khi bạn chọn remember me, non-persistent cookies trở thành Persistent cookies -Non-Persistent cookies ngược lại, trình duyệt tắt, cookies hết hiệu lực, dĩ nhiên session ID theo Non-persistent cookies cịn gọi nơm na session cookies (cookies theo phiên làm việc) + XSS (Cross-Site Scripting) XSS ? Cross-Site Scripting hay cịn gọi tắt XSS (thay gọi tắt CSS để tránh nhầm lẫn với CSS-Cascading Style Sheet HTML) 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 Kỹ thuật cơng XSS nhanh chóng trở thành lỗi phổ biến Web Applications mối đe doạ chúng người sử dụng ngày lớn Người chiến thắng thi eWeek OpenHack 2002 người tìm XSS Phải mối nguy hiểm từ XSS ngày người ý XSS hoạt động ? Về XSS SQL Injection hay Source Injection, yêu cầu (request) gửi từ máy client tới server nhằm chèn vào thơng tin vượt q tầm kiểm sốt server Nó request gửi từ form liệu URL http://www.example.com/search.cgi?query=alert('XSS was found !'); Và trình duyệt bạn lên thông báo "XSS was found !" Các đoạn mã thẻ không bị giới hạn chúng hồn tồn thay file nguồn server khác thơng qua thuộc tính src thẻ Cũng lẽ mà chưa thể lường hết độ nguy hiểm lỗi XSS Nhưng kỹ thuật cơng khác làm thay đổi liệu nguồn web server (mã nguồn, cấu trúc, sở liệu) XSS gây tổn hại website phía client mà nạn nhân trực tiếp người khách duyệt site Tất nhiên đơi hacker sử dụng kỹ thuật đề deface website cơng vào bề mặt website Thật vậy, XSS Client-Side Script, đoạn mã chạy trình - 16 - Bảo mật ứng dụng Web – Đồ án mơn học “Cơng nghệ mạng” duyệt phía client XSS khơng làm ảnh hưởng đến hệ thống website nằm server Mục tiêu công XSS không khác người sử dụng khác website, họ vơ tình vào trang có chứa đoạn mã nguy hiểm hacker để lại họ bị chuyển tới website khác, đặt lại homepage, hay nặng mật khẩu, cookie chí máy tính bạn bị cài loại virus, backdoor, worm Cảnh giác với XSS Có lẽ khơng cần liệt kê nguy hiểm XSS, thực tế bạn có chút hiểu biết XSS bạn khơng cịn phải sợ chúng Thật bạn hồn tồn tránh khỏi việc bị công lỗi XSS hiểu kỹ Các thẻ HTML công cụ cho công kỹ thuật XSS, thẻ IMG IFRAME cho phép trình duyệt bạn load thêm website khác lệnh HTML hiển thị Ví dụ BadTrans Worm loại worm sử dụng thẻ IFRAME để lây lan hệ thống có sử dụng Outlook hay Outlook Express: ====_ABC1234567890DEF_==== Content-Type: multipart/alternative; boundary="====_ABC0987654321DEF_====" ====_ABC0987654321DEF_==== Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable ====_ABC0987654321DEF_==== -====_ABC1234567890DEF_==== Content-Type: audio/x-wav; name="filename.ext.ext" Content-Transfer-Encoding: base64 Content-ID: Đôi đọc thư bạn bị chuyển sang website khác, bạn có nghĩ bạn mật Trước đây, hàng loạt hộp thư Yahoo bị mật hay bị đọc trộm thư mà không rõ nguyên nhân Có lẽ bạn mở thư mà không cảnh giác với XSS, đâu phải file đính kèm gây nguy hiểm cho bạn Chỉ cần với đoạn mã HTML gửi thư bạn hoàn toàn bị cookie mình: - 17 - Bảo mật ứng dụng Web – Đồ án môn học “Công nghệ mạng” Vậy bạn nhận thư, bạn vơ tình đưa chuột qua ảnh gửi kèm có nghĩa bạn bị lấy cookie Và với cookie lấy được, hacker dễ dàng login hịm thư bạn mà khơng cần biết mật bạn Thực bất ngờ tìm thấy Yahoo ngăn hầu hết mối đe doạ từ thẻ HTML lại bỏ qua thẻ IMG Tuy nhiên ngày 12/7/2003 Yahoo kịp thời vá lỗ hồng nghiêm trọng này, khơng phải mà bạn cảnh giác với "lỗi" website Nếu bạn gặp liên kết có dạng http://example.com/search.cgi?query=alert(document.cookie) Chắc chắn bạn phải xem xét kỹ trước click vào Có thể tắt JavaScript cho trình duyệt bạn trước click vào hay có chút cảnh giác Nhưng bạn gặp liên kết : http://example.com/search.cgi?%71%75%65% 61%72%79%3D%3C%73%63%72%69%70% 74%3E%61%6C%65%61%72%74%28%64% 63%75%6D%65%6E%6C%74%2E%63%6F% 6F%6B%69%65%29%3C%2F%73%63%72% 69%70%74%3E>http://example.com/search.cgi?% 71%75%65%61 %72%69%70%74%3E Đó thực chất liên kết ban đầu khác mã hố Một phần kí tự liên kết thay mã HEX nó, tất nhiên trình duyệt bạn hiểu địa thực Bởi bạn gặp phải đoạn mã nguy hiểm bạn cảnh giác với XSS Tât nhiên nhiều kiểu cơng khác, có kiểu tìm có kiều chưa lường hết được, khuôn khổ viết hi vọng với vài ví dụ vừa rồi, bạn hiểu phần XSS Phát XSS cách ? Nếu bạn sử dụng mã nguồn chương trình có sẵn bạn tham khảo danh sách lỗ hổng chương trình bạn trang web chứa thông tin bảo mật securityfocus.com, securiteam.com, Tuy nhiên website tự viết mã nguồn bạn áp dụng phương pháp Trong trường hợp bạn cần đến chương trình scanner tự động Nếu bạn sử dụng môi trường Windows bạn dùng NStealth hay AppScan, chương trình scan tuyệt, bạn khơng kiểm tra lỗi XSS mà cịn cho phép bạn kiểm tra lỗi khác Website đó, Server Tất nhiên đâu phải lúc bạn cần kiểm tra tất cả, bạn muốn kiểm tra lỗi XSS có website, bạn cần sử dụng screamingCSS Đó Perl Script mở kết nối tới website (sử dụng Perl's socket) để kiểm tra lỗi XSS bạn Hơn bạn sử dụng mơi trường Unix lẫn Windows Ngăn ngừa XSS ? - 18 - Bảo mật ứng dụng Web – Đồ án môn học “Công nghệ mạng” Người ta không lường hết mức độ nguy hiểm XSS không khó khăn để ngăn ngừa XSS Có nhiều cách để giải vấn đề OWASP (The Open Web Application Standard Project) nói để xây dựng website bảo mật cao, liệu người sử dụng bạn nên + Chỉ chấp nhận liệu hợp lệ + Từ chối nhận liệu hỏng + Liên tục kiểm tra lọc sữ liệu Tuy nhiên thực tế, số trường hợp bạn phải chấp nhận loại liệu hay khơng có lọc phù hợp Chính bạn phải có cách riêng để giải Một cách hay sử dụng bạn mã hố kí tự đặc biệt trước in website, gây nguy hiểm cho người sử dụng Trong trường hợp thẻ đổi thành Như in hình mà khơng gây nguy hiểm cho người sử dụng Tôi lấy ví dụ với script search.cgi với mã nguồn #!/usr/bin/perl use CGI; my $cgi = CGI->new(); my $query = $cgi->param('query'); print $cgi->header(); print "You entered $query"; Đây hoàn toàn script có lỗi in trực tiếp liệu nhập vào Dĩ nhiên in ra, in dạng đoạn mã HTML, khơng khơng in xác liệu vào cách trực quan mà cịn có tiềm ẩn lỗi XSS Như nói trên, để giải vấn đề này, mã hố kí tự đặc biệt HTML với hàm HTML::Entities::encode() Như ta có mã nguồn hồn hảo sau: #!/usr/bin/perl use CGI; use HTML::Entities; my $cgi = CGI->new(); my $text = $cgi->param('text'); print $cgi->header(); print "You entered ", HTML::Entities::encode($text); Tất nhiên với phương pháp bạn áp dụng ngôn ngữ Web Application khác (ASP, PHP ) Để kiểm tra việc lọc mã hoá liệu trước in ra, bạn dùng chương trình viết ngơn nhữ PHP, đặc biệt thiết kế để phịng chống lỗi XSS Bạn lấy mã nguồn chương trình từ - 19 - ... (Administrator) 18 TÀI LIỆU THAM KHẢO 22 NHẬN XÉT CỦA GIẢNG VIÊN 23 -1- Bảo mật ứng dụng Web – Đồ án môn học “Cơng nghệ mạng” TÌM HIỂU VỀ ỨNG DỤNG WEB 1.1 Ứng dụng Web gì? Trong... vào ổn định ứng dụng web Cấu trúc ứng dụng web Dù có nhiều biến thể, ứng dụng Web thông thường cấu trúc ứng dụng ba lớp Ở dạng phổ biến nhất, trình duyệt Web lớp thứ nhất, máy sử dụng vài công... mềm, Ứng dụng web (hay web application) trình ứng dụng mà tiếp cận qua web thông qua mạng Internet hay Itranet Ứng dụng web phổ biến nhờ vào có mặt vào nơi đâu chương trình Khả cập nhật bảo trì ứng