Xây dựng mô đun firewall tích hợp cho web
Trang 1MỤC LỤC
MỤC LỤC 1
DANH MỤC HÌNH ẢNH 5
c) Dòng phiên bản 1.6.x 13 1 5
c) Dòng phiên bản 1.6.x 17 5
DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT 10
LỜI MỞ ĐẦU 11
Chương 1 13
TỔNG QUAN VỀ HỆ THỐNG QUẢN LÝ NỘI DUNG 13
1.1 Khái niệm Hệ thống quản lý nội dung 13
1.2 Giới thiệu Joomla 14
1.2.1 Lịch sử phát triển 14
1.2.2 Các phiên bản 16
c) Dòng phiên bản 1.6.x 17
1.2.3 Kiến trúc Joomla 1.5! 17
1.2.3.1 Ba tầng hệ thống của Joomla! 1.5 18
1.2.2.2 Mô hình Model-View-Controller (MVC) 20
1.2.4 Nhóm Nòng cốt 21
Chương 2 23
GIỚI THIỆU CHUNG VỀ TƯỜNG LỬA ỨNG DỤNG WEB 23
2.1 Tổng quan về tường lửa ứng dụng web 23
2.2 Ưu điểm của tường lửa ứng dụng web 24
2.3 Hạn chế của tường lửa ứng dụng web 25
2.4 Những rủi ro của WAF 25
Trang 22.5 Firewall Script 28
2.5.1 Khái niệm 28
2.5.2 Chức năng của Firewall Script 28
Chương 3 30
MÔ ĐUN FIREWALL TÍCH HỢP CHO WEBSITE JOOMLA 30
Theo thống kê của trang web (www.webappsecroadmap.com) năm 2008 thì có tới 68% các trang web bị tấn công dựa vào lỗi SQL injection, 61% là bị tấn công theo XSS Đây là những lỗi rất cơ bản nhưng nó rất là nguy hiểm Nguyên nhân chủ yếu là do các nhà phát triển web chưa cẩn thận, chưa ý thức rõ tầm quan trọng của việc bảo vệ dự liệu của website hoặc sơ suất trong quá trình phát triển dẫn đến không kiểm tra kỹ dữ liệu đầu vào 31
Joomla! là một framework dành cho các tổ chức, cá nhân dùng để giới thiệu tin tức, giới thiệu về công ty, làm blog hoặc làm sử dụng vào thương mại điện tử như: bán hàng qua mạng Bản thân Joomla! cũng chưa có mô-đun nào dùng cho việc kiểm tra dữ liệu đầu vào trước khi tới các thành phần mở rộng Do đó, khi một người sử dụng cài những phần mở rộng không đảm bảo an toàn thì rất dễ bị kẻ xấu lợi dụng và tấn công 31
Việc trang bị những sản phẩm chuyên dụng hay các sản phẩm đã được thương mại hóa thì quá đắt Những sản phẩm tường lửa cho Joomla! có thể chống lại được kiểu tấn công này những không chống được các kiểu tấn công khác như: chống được SQL injection, XSS nhưng không chống được DoS hoặc upshell Đối với những sản phẩm, những thiết bị chuyên dụng cấu hình rất phức tạp đối với các doanh nghiệp vừa và nhỏ 31
Do đó em chọn giải pháp xây dựng một Firewall Script tích hợp vào Joomla! 1.5 để bảo vệ các tấn công cũng như làm sạch các dữ liệu trước khi các thành phần khác của Joomla! xử lý dữ liệu 31 Xfirewall là tường lửa ứng dụng web, hoạt động ở tầng Ứng dụng của mô hình OSI Nó có thể chống được nhiều kiểu tấn công tại tầng Ứng dụng như:
Trang 3HTTP Flood, SQL injection, XSS, up shell Ngoài ra, Xfirewall có nhiều chức năng bảo vệ an toàn cho người quản trị như: thay đổi link admin, đặt password
sử dụng htpasswd, hay sử dụng master password để quản lí Xfirewall 31
Hiện nay có nhiều component cũng như plugin được viết ra với mục đích ngăn chặn các tấn công từ bên ngoài vào hệ thống Song nhưng thành phần mở rộng (extension) trên còn có nhiều hạn chế Do đó Xfirewall được viết ra với mong muốn có thể hạn chế tối đa thiệt hại cho máy chủ cũng như cho chính trang web đang được triển khai 32
3.1 Xây dựng mô-đun Xfirewall 32
3.1.1 Luồng dữ liệu vào ra trong Joomla! 32
3.1.2 Cách thức xây dựng một component trong Joomla! 33
3.1.3 Các thành phần trong mô-đun Xfirewall 35
3.1.4 Hoạt động của modun Xfirewall 42
3.1.5 Cài đặt 44
3.2 Một số chức năng của mô-đun Xfirewal 49
3.2.1 SQL injection Attack 49
3.2.2 XSS Attack 52
3.2.3 DDoS Attack (Distributed Denial of Service) 56
3.2.4 Up shell 59
3.2.5 Enable / Disable các chức năng trong admin 61
3.2.6 Chặn user 62
3.2.7 Chặn IP 63
3.2.8 Bảo vệ link admin 63
3.2.9 Master password 66
3.2.10 Ghi log 66
Trang 43.3 So sánh với một số firewall cùng loại 67
3.3.1 Blind SQL Injection 68
3.3.2 DoS 69
3.3.3 File upload 69
3.3.4 File inclusion 70
3.3.5 XSS 70
3.4 Ưu nhược điểm của Xfirewall 71
3.4.1 Ưu điểm 71
3.4.2 Nhược điểm 72
KẾT LUẬN 74
TÀI LIỆU THAM KHẢO 77
PHỤ LỤC 78
Trang 5DANH MỤC HÌNH ẢNH
MỤC LỤC 1
c) Dòng phiên bản 1.6.x 13 1 5 1
c) Dòng phiên bản 1.6.x 17 5 1
c) Dòng phiên bản 1.6.x 17 1
DANH MỤC HÌNH ẢNH 5
DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT 11
LỜI MỞ ĐẦU 12
Chương 1 14
TỔNG QUAN VỀ HỆ THỐNG QUẢN LÝ NỘI DUNG 14
1.1 Khái niệm Hệ thống quản lý nội dung 14
1.2 Giới thiệu Joomla 15
1.2.1 Lịch sử phát triển 15
1.2.2 Các phiên bản 17
c) Dòng phiên bản 1.6.x 18
1.2.3 Kiến trúc Joomla 1.5! 18
1.2.3.1 Ba tầng hệ thống của Joomla! 1.5 19
Hình 1.1 Kiến trúc Joomla! 1.5 19
1.2.2.2 Mô hình Model-View-Controller (MVC) 21
Hình 1.2 Mô hình MVC 21
1.2.4 Nhóm Nòng cốt 22
Chương 2 24
GIỚI THIỆU CHUNG VỀ TƯỜNG LỬA ỨNG DỤNG WEB 24
2.1 Tổng quan về tường lửa ứng dụng web 24
Trang 62.2 Ưu điểm của tường lửa ứng dụng web 25
2.3 Hạn chế của tường lửa ứng dụng web 26
2.4 Những rủi ro của WAF 26
Hình 2.1 Bảng đánh giá các kiểu tấn công Website 27
Hình 2.2 HTTP Parameter Pollution HPP 28
Hình 2.3: Cross-site Script HTTP 28
Hình 2.4: Path Traversal, Local/Remote File Inclusion 29
2.5 Firewall Script 29
2.5.1 Khái niệm 29
2.5.2 Chức năng của Firewall Script 29
Chương 3 31
MÔ ĐUN FIREWALL TÍCH HỢP CHO WEBSITE JOOMLA 31
Theo thống kê của trang web (www.webappsecroadmap.com) năm 2008 thì có tới 68% các trang web bị tấn công dựa vào lỗi SQL injection, 61% là bị tấn công theo XSS Đây là những lỗi rất cơ bản nhưng nó rất là nguy hiểm Nguyên nhân chủ yếu là do các nhà phát triển web chưa cẩn thận, chưa ý thức rõ tầm quan trọng của việc bảo vệ dự liệu của website hoặc sơ suất trong quá trình phát triển dẫn đến không kiểm tra kỹ dữ liệu đầu vào 32
Joomla! là một framework dành cho các tổ chức, cá nhân dùng để giới thiệu tin tức, giới thiệu về công ty, làm blog hoặc làm sử dụng vào thương mại điện tử như: bán hàng qua mạng Bản thân Joomla! cũng chưa có mô-đun nào dùng cho việc kiểm tra dữ liệu đầu vào trước khi tới các thành phần mở rộng Do đó, khi một người sử dụng cài những phần mở rộng không đảm bảo an toàn thì rất dễ bị kẻ xấu lợi dụng và tấn công 32 Việc trang bị những sản phẩm chuyên dụng hay các sản phẩm đã được thương mại hóa thì quá đắt Những sản phẩm tường lửa cho Joomla! có thể chống lại được kiểu tấn công này những không chống được các kiểu tấn công
Trang 7khác như: chống được SQL injection, XSS nhưng không chống được DoS hoặc upshell Đối với những sản phẩm, những thiết bị chuyên dụng cấu hình rất phức
tạp đối với các doanh nghiệp vừa và nhỏ 32
Do đó em chọn giải pháp xây dựng một Firewall Script tích hợp vào Joomla! 1.5 để bảo vệ các tấn công cũng như làm sạch các dữ liệu trước khi các thành phần khác của Joomla! xử lý dữ liệu 32
Xfirewall là tường lửa ứng dụng web, hoạt động ở tầng Ứng dụng của mô hình OSI Nó có thể chống được nhiều kiểu tấn công tại tầng Ứng dụng như: HTTP Flood, SQL injection, XSS, up shell Ngoài ra, Xfirewall có nhiều chức năng bảo vệ an toàn cho người quản trị như: thay đổi link admin, đặt password sử dụng htpasswd, hay sử dụng master password để quản lí Xfirewall 32
Hiện nay có nhiều component cũng như plugin được viết ra với mục đích ngăn chặn các tấn công từ bên ngoài vào hệ thống Song nhưng thành phần mở rộng (extension) trên còn có nhiều hạn chế Do đó Xfirewall được viết ra với mong muốn có thể hạn chế tối đa thiệt hại cho máy chủ cũng như cho chính trang web đang được triển khai 33
3.1 Xây dựng mô-đun Xfirewall 33
3.1.1 Luồng dữ liệu vào ra trong Joomla! 33
Hình 3.1 Mô tả luồng dữ liệu vào/ra trong Joomla! 33
3.1.2 Cách thức xây dựng một component trong Joomla! 34
3.1.3 Các thành phần trong mô-đun Xfirewall 36
Hình 3.4 Các Model trong Xfirewall 40
Hình 3.5 Các View trong Xfirewall 41
Hình 3.6 Plugin trong Xfirewall 42
Hình 3.7 Helpers trong Xfirewall 43
3.1.4 Hoạt động của modun Xfirewall 43
Hình 3.8 Sơ đồ hoạt động 44
Trang 83.1.5 Cài đặt 45
Hình 3.9 Cài đặt modun Xfirewall 45
Hình 3.10 Giao diện chính của Xfirewall 46
Hình 3.11 Cấu hình link an toàn 47
Hình 3.12 Cấu hình truy cập vào back-end 48
Hình 3.13 Cấu hình chống tấn công SQL injection 48
Hình 3.14 Cấu hình chống tấn công DDoS 49
Hình 3.15 cấu hình upshell 50
3.2 Một số chức năng của mô-đun Xfirewal 50
3.2.1 SQL injection Attack 50
Hình 3.16 Cấu hình chống tấn công SQL injection 51
Hình 3.17 Sơ đồ hoạt động kiểm tra tấn công SQL injection 52
Hình 3.18 Cảnh báo lỗi SQL injection 53
3.2.2 XSS Attack 53
Hình 3.19 Sơ đồ kiểm tra tấn công XSS 55
Hình 3.20 Cảnh báo lỗi XSS 57
3.2.3 DDoS Attack (Distributed Denial of Service) 57
Hình 3.21 Mô tả tấn công DDoS 58
Hình 3.22 Cấu hình tấn công DDoS 59
3.2.4 Up shell 60
Hình 3.23 Cấu hình chống up shell 61
3.2.5 Enable / Disable các chức năng trong admin 62
Hình 3.24 Cấu hình cấm các chức năng trong phần quản trị 63
3.2.6 Chặn user 63
Trang 9Hình 3.25 Cấu hình chặn user truy cập vào phần quản trị 63
3.2.7 Chặn IP 64
Hình 3.26 Giao diện quản trị IP bị cấm 64
3.2.8 Bảo vệ link admin 64
Hình 3.27 Cấu hình tạo link an toàn cho admin 65
Hình 3.28 Cấu hình đặt password sử dụng htpasswd 66
Hình 3.29 Giao diện đăng nhập khi cấu hình đặt pass bằng htpasswd 66
3.2.9 Master password 67
Hình 3.30 Cấu hình Master password 67
Hình 3.31 Giao diện đăng nhập Master user 67
3.2.10 Ghi log 67
Hình 3.32 Nhật kí trang web 68
3.3 So sánh với một số firewall cùng loại 68
3.3.1 Blind SQL Injection 69
3.3.2 DoS 70
3.3.3 File upload 70
3.3.4 File inclusion 71
3.3.5 XSS 71
3.4 Ưu nhược điểm của Xfirewall 72
3.4.1 Ưu điểm 72
3.4.2 Nhược điểm 73
KẾT LUẬN 75
TÀI LIỆU THAM KHẢO 78
Trang 10PHỤ LỤC 79
Trang 11DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT
CMS Content Management System
SFLC Software Freedom Law Center
MySQL Hệ quản trị cơ sở dữ liệu MySQL
Front-end Phần giao diện phía người sử dụng – site
Back-end Phần giao diện phía người quản trị
-administratorFramework Thường sử dụng cho những mã nguồn được đóng
gói lại và có thể phát triển trên đóMVC Module View Controller
CSDL Cơ Sở Dữ Liệu
HQT CSDL Hệ quản trị Cơ sở dữ liệu
WAF Web Application Firewall
OSI Open Systems Interconnection
GUI Graphical User Interface
Trang 12LỜI MỞ ĐẦU
Vấn đề an ninh mạng hiện nay trở nên cấp thiết hơn bao giờ hết Nhất là đối vớicác website thì đây là mối đe dọa rất lớn bởi tính lỏng lẻo trong công các bảo vệhoặc khó khăn trong việc bảo vệ So với giải pháp đặt các firewall đắt tiền đểbảo vệ website thì một giải pháp khả thi và hiệu quả hơn cả đó chính là tự bảo
vệ ngay chính website của mình Do đó giải pháp Web Application Firewallđược lựa chọn tiên nhất trong việc xây dựng vào bảo vệ các trang web
Joomla là một mã nguồn mở do cộng đồng thế giới cùng nhau xây dựng và pháttriển Nó đơn giản trong việc thiết kế và quản trị, đồng thời cũng có thể xây dựngđược những website phức tạp như: web bán hàng, rao vặt, mạng xã hội Quatìm hiểu em thấy Joomla! hoàn toàn có khả năng làm một website chuyênnghiệp cũng như việc xây dựng các ứng dụng bảo mật trên đó
Bản thân Joomla! chưa có mô-đun nào hỗ trợ bảo mật, kiểm tra dữ liệu đầu vàotrước khi tới các thành phần mở rộng Do đó, khi một người sử dụng cài nhữngphần mở rộng không đảm bảo an toàn thì rất dễ bị kẻ xấu lợi dụng và tấn công.Hơn nữa là Joomla cũng chưa có mô-đun firewall nào để bảo vệ trang web Một
số các nhà phát triển cũng đã phát triển các mô-đun firewall nhưng vẫn chưathực sự hiệu quả và chống được ít kiểu tấn công.Vì vậy, em đã chọn đề tài của
mình là: “Xây dựng module firewall tích hợp vào website dựa trên nền
joomla 1.5” để có thể phòng chống và bảo vệ trang web một cách hiệu quả hơn.
Đồ án tốt nghiệp gồm các chương sau:
Chương 1: Tổng quan về CMS
Chương 2: Giới thiệu chung về tường lửa ứng dụng web
Chương 3: Mô-đun Xfirewall
Chương 4: Kết luận
Để hoàn thành được đồ án này, trước hết em xin chân thành cảm ơn ban lãnh đạoHọc viện Kỹ thuật Mật Mã cùng với các thầy cô trong khoa an toàn thông tin,
Trang 13các thầy cô trong khoa công nghệ thông tin cùng các thầy cô ở khoa khác đã hếtsức tạo điều kiện và có công ơn dạy dỗ em trong quá trình học tập.
Qua đây, em cũng xin cảm ơn thầy giáo TS Nguyễn Chung Tiến công tác tại
phân viện Nghiên Cứu Nghiệp Vụ Mật Mã và An Toàn Thông Tin – Học Viện
Kỹ Thuật Mật Mã người đã có công rất lớn trong quá trình em làm đồ án Thầy
đã hướng dẫn nhiệt tình và tạo điều kiện để em có thể học hỏi thêm nhiều kiếnthức bổ ích
Em xin gửi lời cảm ơn đến gia đình và bạn bè đã ủng hộ và động viên em trongsuốt quá trình học tập và làm việc cũng như trong thời gian làm đồ án
Em rất mong nhận được các ý kiến đóng góp của thầy cô và các bạn để đồ án của
em được hoàn thiện hơn
Em xin chân thành cảm ơn !
Hà Nội, ngày 30 tháng 5 năm 2011
Sinh viên thực hiện
Trang 14
Chương 1 TỔNG QUAN VỀ HỆ THỐNG QUẢN LÝ NỘI DUNG
1.1 Khái niệm Hệ thống quản lý nội dung
Hệ thống quản lý nội dung hay còn gọi là CMS (Content Management System)được sử dụng để điều khiển và chỉnh sửa nội dung Nội dung bao gồm tệp tinđiện tử, hình ảnh, video, file âm thanh, tài liệu điện tử và văn bản web Kháiniệm chính đằng sau một CMS là tạo ra những tập tin có sẵn cho việc chỉnh sửanội bộ hoặc trên nền Internet Một CMS thường được sử dụng để lưu trữ tài liệurất tốt Rất nhiều công ty sử dụng CMS để tổ chức và lưu trữ những tập tin dướidạng công cộng Nhiều công ty sử dụng CMS có thể chia sẻ nội dung với ngườikhác một cách dễ dàng, như hầu hết các hệ thống bây giờ
Hệ thống quản lý nội dung trang web chủ yếu được sử dụng để kiểm soát và xuấtbản các văn bản dựa trên các tài liệu như bài viết, tài liệu dạng văn bản và thôngtin Một CMS bình thường có thể cung cấp các tính năng sau đây:
• Nhập và tạo ra các tài liệu, video và các hình ảnh
• Xác định người sử dụng chính và vai trò của mình trong hệ thống quản
cụ thể
• Một khả năng để ghi chép, theo dõi và quản lý rất nhiều các phiên bảncủa cùng một nội dung hay tập tin - một hệ thống quản lý tài liệu vớinhiều phiên bản
Trang 15• Một khả năng để xuất bản nội dung vào một khu lưu trữ tập trung, đểtạo điều kiện lớn hơn truy cập vào nội dung Quan trọng hơn là với thờigian, kho này là một yếu tố quan trọng của hệ thống CMS, tích hợp vàtìm kiếm và các phương pháp thu hồi.
• Một số hệ thống CMS cho phép dùng định dạng của một số văn bảntrong tài liệu như: phông chữ, màu sắc, bố trí bố cục…
Một số CMS thông dụng hiện nay: Joomla!, Drupal, Wordpress, Nuke…
1.2 Giới thiệu Joomla
Joomla! là một hệ quản trị nội dung mã nguồn mở Joomla! được viết bằng ngônngữ PHP và kết nối tới cơ sở dữ liệu MySQL, cho phép người sử dụng có thể dễdàng xuất bản các nội dung của họ lên Internet hoặc Intranet
Mọi thứ vẫn tiến triển bình thường cho đến trước khi xảy ra tranh chấp về mặtpháp lý vào năm 2003 Vụ việc dẫn tới ý tưởng Mambo cần phải được bảo vệbởi một tổ chức phi lợi nhuận Nhưng những nhà phát triển không hài lòng về cơcấu của Quỹ tài trợ Mambo Andrew Eddie, người lãnh đạo nhóm phát triển,trong một lá thư gửi cộng đồng, đã chia sẻ những lo lắng của mình về Quỹ tài trợMambo và mối quan hệ của nó tới cộng đồng Ông viết: " Chúng tôi cho rằngtương lai của Mambo nên được quản lý, điều chỉnh bởi những yêu cầu của người
sử dụng và khả năng của những nhà phát triển Trong khi đó, Quỹ tài trợ Mambolại được thiết kế nhằm trao quyền điều khiển cho Miro, một thiết kế ngăn cản sựhợp tác giữa Quỹ tài trợ và cộng đồng " Bởi vậy vào ngày 17 tháng 8 năm
Trang 162005, toàn bộ đội phát triển nòng cốt của Mambo đã rời khỏi dự án trong khiđang làm việc với phiên bản 4.5.3.
Nhờ sự trợ giúp của Trung tâm Luật Tự do Phần mềm (Software Freedom LawCenter - SFLC), 20 thành viên nòng cốt cũ của Mambo đã thành lập một tổ chứcphi lợi nhuận khác lấy tên là Open Source Matters, để hỗ trợ về mặt tổ chức,pháp lý và kinh phí cho dự án mã nguồn mở còn chưa được đặt tên của họ Cùnglúc đó, nhóm phát triển cũng lập một website lấy tên OpenSourceMatters.org đểphân phối thông tin tới những người sử dụng, những người phát triển, nhữngngười thiết kế và cộng đồng Joomla nói chung Người đứng đầu dự án chính làAndrew Eddie, còn được biết đến với tên gọi "Sếp trưởng"
Ngay ngày hôm sau, 1000 người đã gia nhập diễn đàn OpenSourceMatters.org,hầu hết các bài viết cho diễn đàn đều khuyến khích và đồng tình với hành độngcủa nhóm phát triển Tin trên đã nhanh chóng được đăng tải trên các tạp chínewsforge.com, eweek.com và ZDnet.com
Trong một thông báo của Eddie 2 tuần sau đó, các nhóm đã được tổ chức lại vàcộng đồng Joomla! tiếp tục tăng trưởng Tới ngày 1 tháng 9 năm 2005 tên mớicủa dự án đã được thông báo cho khoảng 3000 người theo dõi đội phát triển vàđến ngày 16 tháng 9 thì họ cho ra đời Joomla! 1.0
Trang 17o Phiên bản phát hành mới nhất: Joomla! 1.5.23 (ngày 04 tháng
Phiên bản đầu tiên của Joomla! là phiên bản Joomla! 1.0 (hay Joomla! 1.0.0) có
nguồn gốc từ Mambo 4.5.2.3 (đã bao gồm thêm nhiều bản vá bảo mật và sửalỗi).Các phiên bản tiếp theo có dạng 1.0.x
Điểm mạnh của Joomla! 1.0.x: Có một số lượng rất lớn các thành phần mở rộng(module/component); thành phần nhúng (mambot); giao diện (template)
Trang 18b) Dòng phiên bản 1.5.x
Phiên bản Joomla! 1.5 là phiên bản cải tiến từ Joomla! 1.0.x (phần mã được viếtlại hoàn toàn, tuy nhiên vẫn giữ cách hành xử như cũ) được coi như Mambo 4.6.Joomla! 1.5 tiếp tục duy trì một giao diện người sử dụng đơn giản (nhìn và cảmnhận - look and feel)
Cả Joomla! 1.5 và Mambo 4.6 đều hỗ trợ đa ngôn ngữ Joomla! thì sử dụng fileđịnh dạng ".ini" để lưu các thông tin chuyển đổi ngôn ngữ, còn Mambo thì sửdụng file định dạng ".gettext" Joomla 1.5 hỗ trợ tất cả các ngôn ngữ có tập ký tựđược biểu diễn bằng bảng mã UTF-8
Joomla! 1.5 cũng bao gồm các đặc tính mới như các mô hình chứng thực(LDAP, Gmail ), hỗ trợ mô hình khách-chủ (client-server) xml-rpc Nó cũng hỗtrợ các trình điều khiển cơ sở dữ liệu dành cho MySQL 4.1+ (trên nền PHP 5) vàtăng cường hỗ trợ cho MySQL 5, cũng như hỗ trợ các loại cơ sở dữ liệu khác.Điểm mạnh của Joomla! 1.5: Phần quản trị website có sử dụng công nghệ Web2.0, một số tính năng được cải tiến hơn so với Joomla 1.0.x
c) Dòng phiên bản 1.6.x
Jommla! 1.6 là dòng phiên bản tiếp theo của Joomla! 1.5 Những thay đổi đáng
kể của phiên bản này chính là:
- Hệ thống quản lý truy cập mở rộng
- Quản lí thể loại lồng nhau, đa cấp
- Chuẩn hóa các phần mở rộng được xây dựng dựa trên mô hình MVC
1.2.3 Kiến trúc Joomla 1.5!
Joomla! 1.5 được phát triển và kết thừa từ phiên bản tiền nhiệm trước đó là 1.0
Nó được xây dựng với ba tầng hệ thống và thiết kế theo mô hình MVC Với thiết
kế như vậy sẽ dễ dàng cho việc quản lý code, dễ dàng cho việc phát triển cácthành phần và tạo ra một chuẩn cho cộng đồng phát triển các ứng dụng mở rộng
Trang 191.2.3.1 Ba tầng hệ thống của Joomla! 1.5
Hình 1.1 Kiến trúc Joomla! 1.5
Tầng thứ nhất là Extensions Tier Đây là tầng trên cùng của Joomla! framework,
tầng này có các thành phần (component), mô đun (module) và giao diện(template) được thực thi và thể hiện hay còn gọi là view Ba thành phần này tạonên điểm mạnh cho Joomla! đó chính là mô hình MVC Các thành phần này cóchức năng và nhiệm vụ sau:
• Components: Là một trong các thành phần mở rộng của Joomla!, thựcchất nó là một ứng dụng độc lập trong hệ thống Joomla! Componentđược sử dụng để thực hiện một chức năng lớn nào đó, chẳng hạn như:Quản lí nội dung tin tức, quảng cáo, rao vặt, liên kết web, liên hệ
• Modules: Là một trong các thành phần mở rộng của Joomla!, nó là mộtứng dụng nhỏ (thường chỉ có vài file và phần lập trình cũng khôngnhiều) được sử dụng chủ yếu để lấy dữ liệu và hiển thị thông tin.Module thường được dùng kết hợp kèm với các component nhằm mởrộng, cũng như thể hiện rõ ràng hơn các chức năng của component.Không giống như component, một module có thể được đặt ở bất kỳ vịtrí nào trên template hoặc vị trí do người dùng tự định nghĩa Ngoài ramột module có thể được nhân bản, nghĩa là cùng lúc có thể xuất hiện
Trang 20tại một vị trí hoặc các vị trí khác nhau hay có thể tái sử dụng cho mộttrang web khác Các module được quản lý ở giao diện người quản trị.Mỗi một module có thể có hoặc không có các thông số cấu hình Vàngười quản trị có thể cho phép các module ẩn hoặc hiện ở vị trí nào đótùy theo thiết kế, chức năng của trang web.
• Templates: Là một gói bao gồm các file PHP, HTML, CSS, JS(Javascript) và các tấm hình, ảnh, biểu tượng, video, flash kèm theotạo nên giao diện (bố cục và hình hài) của website Joomla! sử dụngcác giao diện khác nhau cho front-end (site) và back-end(administrator)
Tầng thứ hai là Application Tier Đây là tầng giữa của Joomla! framework.Tầng này bao gồm các thành phần mở rộng của lớp JApplication Hiện tại có 4ứng dụng trong bản phân phối của Joomla!:
• JInstallation chịu trách nhiệm cài đặt các ứng dụng của joomla vào webserver và xóa bỏ chúng sau khi quá trình cài đặt hoàn tất
• JAdministrator chịu trách nhiệm cho phần quản trị back-end
• JSite chịu trách nhiệm cho phần front-end của website
• XML-RPC hỗ trợ quản trị từ xa của website joomla
Tầng thứ ba Framework Tier: Đây cũng là tầng cuối cùng của framework Tầngnày chứa:
• Framework: Đây chính là lõi (core) của Joomla!, thực hiện và xử lýluồng dữ liệu
• Libraries: Chứa các lớp phục vụ cho các chức năng thực thi của corecũng như các chức năng mở rộng mà nhà phát triển xây dựng
• Plugin: Hay còn gọi là mambot(trong phiên bản 1.0) nó là những tiếntrình nhỏ, thực hiện một hay nhiều nhiệm vụ một cách tự động trướckhi sự kiện đó xảy ra
Trang 211.2.2.2 Mô hình Model-View-Controller (MVC)
Bắt đầu từ phiên bản Joomla! 1.5.x hoặc các phiên bản sau này, Joomla! đã đưavào một framework mới, mang lại những thuận tiên rất lớn cho những ngườiphát triển Các đoạn code giờ đây rất dễ dàng để kiểm tra và khá rõ ràng.Framework này đưa ra một mẫu thiết kế mới, thiết kế MVC (Model-View-Controller) trong Joomla
Trang 22Mô hình này đã tạo ra một chuẩn chung cho cộng đồng phát triển Joomla! Qua
đó, cộng động phát triển có thể dễ dàng đọc, phát triển cũng như kế thừa nhữngsản phẩm của người khác
Nhiệm vụ và chức năng của các thành phần trong mô hình MVC:
• View: Cũng như tên gọi, nó thể hiện ra ngoài cho người sử dụng giaodiện của chương trình, trong lớp này người ta tuỳ biến để có thể rađược nhiều kiểu giao diện khác nhau Cũng giống lớp Model, khi muốnthay đổi giao diện, người ta chỉ thay đổi lớp View mà thôi
• Model: Là lớp quản lý tất cả việc truy xuất dữ liệu vào CSDL, bao gồm
cả việc thêm, xoá, sửa… Chính vì thế khi thay đổi một HQT CSDLkhác, người ta chỉ cần thay đổi lớp Model này Đây chính là lợi điểmcủa mô hình MVC – tính mềm dẻo
• Controller: Lớp này được ví như chiếc xương sống của toàn bộ chươngtrình, việc xử lý các luồng dữ liệu yêu cầu (request) , gọi và thực hiệncác lớp Model, View … Lớp này rất ít khi chỉnh sửa nếu ko có nhu cầucan thiệp vào hệ thống
1.2.4 Nhóm Nòng cốt
Dự án Joomla! hiện được chèo lái bởi 19 thành viên (ban đầu là 20) của NhómNòng cốt (Core Team) đến từ 11 quốc gia trên thế giới bao gồm: Ric Allinson,Brad Baker, Shayne Bartlett, Levis Bisson, Michelle Bisson, Tim Broeker,David Gal, Rey Gigataras, Wilco Jansen, Johan Janssens, Alex Kempkens,Mateusz Krzeszowiec, Louis Landry, Andy Miller, Sam Moffatt, Peter Russell,Emir Sakic, Marko Schmuck, Antonie de Wilde
Danh sách 19 thành viên của Nhóm Nòng cốthttp://www.joomla.org/content/blogcategory/43/85/
Những giải thưởng mà Joomla đã đạt được:
• Tháng 10 năm 2007, Hệ quản trị nội dung mã nguồn mở PHP tốt nhất
Trang 23• Tháng 11 năm 2006, Hệ quản trị nội dung mã nguồn mở tốt nhất doPackt Publishing công bố.
• Tháng 10 năm 2006, Dự án mã nguồn mở/ Linux tốt nhất tại triễn lãmLinuxWorld 2006 ở Anh
• Tháng 10 năm 2005, Dự án mã nguồn mở/ Linux tốt nhất tại triễn lãmLinuxWorld 2005 ở Anh
Trang 24Chương 2 GIỚI THIỆU CHUNG VỀ TƯỜNG LỬA ỨNG DỤNG WEB2.1 Tổng quan về tường lửa ứng dụng web
Tường lửa ứng dụng web ( Web Application Firewall – WAF) là giải pháp bảomật toàn diện và mạnh mẽ dành cho các ứng dụng web WAF đưa ra mộtphương thức phòng vệ chống lại các hoạt động như khai thác các lỗ hổng về giaothức, lỗ hổng về lập trình Bên cạnh đó, WAF còn cảnh báo cho người quản trịbiết về những lỗi ứng dụng mà các hacker có thể khai thác, đánh cắp thông tin,gây lỗi từ chối dịch vụ hoặc làm thay đổi giao diện trang web
WAF nằm giữa các ứng dụng web và người dùng Nó hoạt động cũng giống nhưcác tường lửa truyền thống là dựa vào các chính sách được tích hợp vào phầnmềm hoặc các thiết bị phần cứng WAF có thể chạy trong 1 thiết bị hoặc tíchhợp ngay trên máy chủ (server)
Tường lửa ứng dụng web kiểm soát các dữ liệu vào/ra, cũng như các truy cập tớimáy chủ hay các dữ liệu từ máy chủ xuất ra ngoài Tuy nhiên, các tường lửatruyền thống hay thậm chí cả hệ thống chống xâm nhập (IPS), các thiết bị phântích gói tin IP cũng không thể bảo vệ hết những nguy cơ tấn công cho các ứngdụng tại tầng Ứng dụng của mô hình OSI Nếu không có sự chuẩn bị bảo vệ các
dữ liệu thì các tường lửa hoạt động ở tầng 3 không thể phát hiện và khắc phụccác mối đe dọa của tầng ứng dụng
WAF hoạt động chủ yếu ở tầng ứng dụng (Application layer) của mô hình OSI.Ngoài ra nó cũng có thể hoạt động ở trên một số các tầng khác như: tầng phiên(Session layer), tầng trình diễn (Presiontation layer) Tại tầng ứng dụng, WAFphân tích các dữ liệu dựa vào giao thức HTTP Sau đó dựa vào các luật đã đặt ra
mà nó cho phép truy cập hay không Một tường lửa ứng dụng được coi như làmột thiết bị bảo vệ máy chủ (server) khỏi bị tấn công
Một số WAF như :
Trang 25• Armorlogic - Profense web application firewall
• Array Networks - WebWall Multi-Layered Application Security
• Barracuda Web Application Firewall
• Cisco - Application Control Engine (ACE) Web Application Firewall
• Citrix NetScaler - Application Firewall
• F5 Networks - Application Security Manager ASM
• Fortinet - Fortiweb web application firewall
• ModSecurity - Opensource web application firewall
• Radware - AppWall Web Application Firewall
• SonicWALL - SonicWALL Web Application Firewall Service
• List of Additional Web Application Firewalls - Mosaic SecurityResearch
• RSfirewall - Rsjoomla.com
• Jfirewall - jfirewall.com
2.2 Ưu điểm của tường lửa ứng dụng web
Tính linh hoạt cao, khả năng tùy biến dựa theo môi trường và cách thức bị tấncông mà có thể thay đổi các luật làm tăng tính mềm dẻo của tưởng lửa loại này.Các luật này được điều khiển thông qua giao diện người dùng GUI (GraphicalUser Interface)
Hoạt động trên nhiều môi trường khác nhau Nó có thể hoạt động trên cả hệ điềuhành window hay linux, có thể chạy trên nền Apache hoặc là IIS
Giá thành rẻ, đây là một ưu thế của WAF Chi phí để xây dựng tường lửa loạinày thấp hơn rất nhiều so với việc mua một tường lửa hoạt động ở các mức kháctrên mô hình OSI thậm chí còn miễn phí (Mod_security)
Trang 26Tường lửa loại này có khả năng phân tích nội dung gói tin mà hacker gửi đến do
đó hạn chế nguy cơ bị tấn công rất cao Tránh các tấn công bằng các mã độc hạigửi tới server
2.3 Hạn chế của tường lửa ứng dụng web
Mặc dù tính linh hoạt cao, song tường lửa ứng dụng web còn có nhiều hạn chế.Tính linh hoạt thể hiện rõ ở môi trường hoạt động Nó có thể hoạt động trênnhiều hệ điều hành: Linux, window… Các tập luật mềm dẻo, dễ dàng thay đổicũng như thêm các luật mới, nhằm tăng hiệu quả phòng chống các nguy cơ tấncông
Do chỉ hoạt động ở các tầng Application, Presiontation và Session của mô hìnhOSI cho nên tường lửa ở các mức này chỉ chống lại được một số các kiểu tấncông như: SQL injection, HTTP Flood, XSS, Local attack, cướp phiên… Đối vớicác kiểu tấn công ở các mức dưới (từ tầng 4 trở xuống) thì không có khả năngchống lại
Đa số các tường lửa loại này là những phần mềm được tích hợp lên server do đótính chuyên biệt không cao, phải xử lý nhiều loại dữ liệu Vì vậy, hiệu năng vàtốc độ xử lý sẽ không cao
Quá trình xử lí các yêu cầu từ phía người dùng là việc làm không thể thiếu, việc
xử lý này đã làm giảm tốc độ mạng đi đáng kể
2.4 Những rủi ro của WAF
Năm 2008 dự án về WAF ra đời tính tới thời điểm này là đã hơn 2 năm (thamchiếu theo website: www.webappsecroadmap.com), có rất nhiều sản phẩm ra đờiđáp ứng đầy đủ các nhu cầu mà WAF mong muốn
Song bên cạnh đó, mạng Internet toàn cầu đang ngày càng phát triển như vũ bãokéo theo rất nhiều rủi ro tiềm ẩn mà các nhà nghiên cứu WAF vẫn chưa tìm racách nào ngăn chặn triệt để toàn diện nhất Trong một cuộc khảo sát tổng hợpcác rủi ro xảy ra trong môi trường Internet cho thấy có kết quả như sau:
Trang 27Hình 2.1 Bảng đánh giá các kiểu tấn công WebsiteKết quả cho ta thấy, đa số các website bị tấn công đều bị những kẻ xấu sử dụng
và khai thác các lỗi về SQL injection, XSS Tưởng chừng các lỗi này rất đơngiản và dễ khắc phục, nhưng trên thực tế cho thấy sự đa dạng về các phươngthức tấn công, và sự uyển chuyển của các cách khai thác lỗi đã khuyến cho nhiềulỗi hổng được phát hiện
Năm 2009, tổ chức Positive Technologies – một tổ chức hàng đầu về bảo mậtcủa Nga đã tiến hành một cuộc “kiểm tra chất lượng” về các giải pháp WAF Sửdụng 2 công nghệ SQL Injection và Cross-site Script, nhóm nghiên cứu đã thửnghiệm thành công phương thức ByPass qua WAF gồm có:
SQL Injection – Normalization, HTTP Parameter Pollution HPP, Blind,
Signature ByPass: Sử dụng các tham số “truyền biến” của các hàm SQL truy vấn
được yêu cầu “trả về” nhằm mục tiêu tương tác tới dữ liệu truy cập “trái phép” từphía người thực hiện tấn cống hệ thống
Trang 28Hình 2.2 HTTP Parameter Pollution HPP Cross-site Script HTTP Parameter Pollution HPP, Blind, Signature ByPass:Thực hiện việc tấn công thông qua sự phản hồi các yêu cầu từ phía người dùngkhi tương tác với hệ thống qua các đoạn mã tương tác sử dụng Javascript.
Hình 2.3: Cross-site Script HTTPVới kiểu tấn công này, mục đích của hacker không phải là server mà chính lànhững người dùng, những người sử dụng các dịch vụ của nhà cung cấp Ngườidùng không thể biết được là chuyện gì đã xảy ra với các thông tin cá nhân củamình bị lộ từ khi nào
Trang 29Path Traversal, Local/Remote File Inclusion: Kỹ thuật “truyền biến” thông qua
trình duyệt thực thi một đoạn mã “trái phép” tấn công vào hệ thống
Hình 2.4: Path Traversal, Local/Remote File InclusionVới kiểu tấn công này, hacker có thể dễ dàng xem được những file của hệ thống
mà không có quyển truy cập Điều này rất nguy hiểm nếu không kiểm tra kỹ cácbiến trong quá trình xử lý dữ liệu Nó có thể làm lộ thông tin của server cũngnhư thông tin của người dùng trên server đó
2.5 Firewall Script
2.5.1 Khái niệm
Firewall Script cung cấp một tường lửa có thể được điều hành bởi người dùngtrên cả hai chia sẻ các máy chủ lưu trữ và máy chủ của riêng họ Nó có thể lànhững firewall được tích hợp sẵn trên các server như: Iptables, mod_security,ISA… Hay nó có thể là những đoạn script được tích hợp vào mã nguồn để chốnglại những hành động trái phép đang diễn ra
Firewall Script là một trong những loại tường lửa ứng dụng web Nó cũng là mộtloại WAF điển hình cho việc bảo vệ các website bây giờ Đặc biệt là các diễnđàn, các website tin tức của các công ty rất dễ bị kẻ xấu tấn công gây thiệt hạikhông nhỏ đến các tổ chức, cá nhân này
2.5.2 Chức năng của Firewall Script
Firewall Script có rất nhiều loại và khả năng chống lại các tấn công hay là khảnăng kiểm soát những hành động bất thường của mỗi Firewall Script là khácnhau Đối với một số Firewall Script có thể kiểm soát được luồng dữ liệu, chống
Trang 30được các tấn công trên nhiều tầng của mô hình OSI như: Iptables Mặt khác, cónhững Firewall Script nhỏ gọn (chỉ có 1 hay một số file) cũng có chức năngchống lại nhiều tấn công: SQL injection, XSS, DoS, Spam nội dung…
Hiện nay, trên các diễn đàn thường sử dùng các loại Firewall Script PHP Đặcđiểm của nó là nhỏ, nhẹ, cài đặt dễ dàng và cũng thực sự tỏ ra hiệu quả để chốnglại các tấn công
Trang 31Chương 3
MÔ ĐUN FIREWALL TÍCH HỢP CHO WEBSITE JOOMLA
Trang 32Theo thống kê của trang web (www.webappsecroadmap.com) năm 2008 thì cótới 68% các trang web bị tấn công dựa vào lỗi SQL injection, 61% là bị tấn côngtheo XSS Đây là những lỗi rất cơ bản nhưng nó rất là nguy hiểm Nguyên nhânchủ yếu là do các nhà phát triển web chưa cẩn thận, chưa ý thức rõ tầm quantrọng của việc bảo vệ dự liệu của website hoặc sơ suất trong quá trình phát triểndẫn đến không kiểm tra kỹ dữ liệu đầu vào.
Joomla! là một framework dành cho các tổ chức, cá nhân dùng để giới thiệu tintức, giới thiệu về công ty, làm blog hoặc làm sử dụng vào thương mại điện tửnhư: bán hàng qua mạng Bản thân Joomla! cũng chưa có mô-đun nào dùngcho việc kiểm tra dữ liệu đầu vào trước khi tới các thành phần mở rộng Do đó,khi một người sử dụng cài những phần mở rộng không đảm bảo an toàn thì rất dễ
bị kẻ xấu lợi dụng và tấn công
Việc trang bị những sản phẩm chuyên dụng hay các sản phẩm đã được thươngmại hóa thì quá đắt Những sản phẩm tường lửa cho Joomla! có thể chống lạiđược kiểu tấn công này những không chống được các kiểu tấn công khác như:chống được SQL injection, XSS nhưng không chống được DoS hoặc upshell.Đối với những sản phẩm, những thiết bị chuyên dụng cấu hình rất phức tạp đốivới các doanh nghiệp vừa và nhỏ
Do đó em chọn giải pháp xây dựng một Firewall Script tích hợp vào Joomla! 1.5
để bảo vệ các tấn công cũng như làm sạch các dữ liệu trước khi các thành phầnkhác của Joomla! xử lý dữ liệu
Xfirewall là tường lửa ứng dụng web, hoạt động ở tầng Ứng dụng của mô hìnhOSI Nó có thể chống được nhiều kiểu tấn công tại tầng Ứng dụng như: HTTPFlood, SQL injection, XSS, up shell Ngoài ra, Xfirewall có nhiều chức năng bảo
vệ an toàn cho người quản trị như: thay đổi link admin, đặt password sử dụng.htpasswd, hay sử dụng master password để quản lí Xfirewall
Trang 33Hiện nay có nhiều component cũng như plugin được viết ra với mục đích ngănchặn các tấn công từ bên ngoài vào hệ thống Song nhưng thành phần mở rộng(extension) trên còn có nhiều hạn chế Do đó Xfirewall được viết ra với mongmuốn có thể hạn chế tối đa thiệt hại cho máy chủ cũng như cho chính trang webđang được triển khai.
3.1 Xây dựng mô-đun Xfirewall
3.1.1 Luồng dữ liệu vào ra trong Joomla!
Khi người dùng truy cập vào website, tức là đã có kết nối giữa người dùng vàwebsite Giao diện mà người dùng nhìn thấy đó chính là do View được thể hiện
ra Mỗi một Component của Joomla! Có thể có môt hoặc nhiều view
Thông qua View người dùng có thể tương tác với webserver để sử dụng cácdịch vụ tiện ích của nó Quá trình tương tác đáp ứng yêu cầu của người dùngđược View chuyển tiếp cho Contrller
Hình 3.1 Mô tả luồng dữ liệu vào/ra trong Joomla!
Theo mô hình trên ta thấy:
1 Các yêu cầu từ người dùng đề được chuyển tới Controller
Trang 342 Controller có nhiệm vụ điều khiểu các yêu cầu đó để lấy ra các Modeltương ứng Việc Controller điều khiển như vậy để tránh tình trạng lấynhiều những dữ liệu không cần thiết, tránh server xử lý quá tải.
3 Nhiệm vụ của Model khi được Controller gọi tới là truy vấn vào CSDL
để lấy ra các dữ liệu cần thiết
4 Kết quả được trả về Controller sau khi Model đã truy vẫn CSDL xong
5 Nhiệm vụ tiếp theo của Controller là xác định View nào được hiển thị
và Layout nào được lấy ra
6 Thông qua dữ liệu trả về từ Model, View có nhiệm vụ trả lại kết quả
mà người dùng yêu cầu
Quá trình tương tác giữa Controller, Model, View, Layout đều dựa vào cácphương thức như là: getModel, getView hay getLayout, nhờ đó Controller biết làphải lấy những gì cần thiết khi có yêu cầu
3.1.2 Cách thức xây dựng một component trong Joomla!
Trong Joomla! 1.5, các chức năng đểu được chứa trong thư mục “components” ở
cả back-end và front-end Component ở back-end có nhiệm vụ quản lý chứcnăng bao gồm: thêm, xóa, sửa… Component ở front-end nhận các yêu cầu củangười dùng thông qua các View sẽ hiển thị các thông tin ứng với các chức năngcủa Component này
Để xây dựng một component trong Joomla! 1.5 thì cần phải tạo ra một thư mụctrong com_ten_chucnang ở phía back-end và front-end Trong đó, tiền tố “com_”
là bắt buộc phải có và đứng trước trong phần đặt tên component Tiếp đó là
“ten_chucnang”, tên này có thể tùy ý đặt Thông thường sẽ đặt theo tên chứcnăng mà người phát triển muốn xây dựng
Ví dụ dưới đây cho sẽ cho thấy rõ hơn về các thành phần tối thiểu của mộtcomponent trong Joomla!
Trang 35Hình 3.2 Cấu trúc một compoment Joomla! 1.5 đơn giản
Ở đây là cấu trúc của một component có tên là “com_test” Các thành phần bắtbuộc cần phải có đó là:
- File test.php: Tên “test” không phải đặt một cách tùy ý mà phải đặttrùng với tên của thư mục không có tiền tố “com_” Mục đích là để lấy
ra tên chức năng khi người dùng yêu cầu
- File controller.php: File này sẽ điều khiển các Model, các View đượclấy ra thông qua các truy vấn của người dùng
- Thư mục “controllers”: Có thể có hoặc không thư mục này Ở đấy chứacác Controller có các chức năng khác nhau: test, application…
- Thư mục “models”: Thư mục này chứa một hay nhiều Model tùy vàongười phát triển thêm các chức năng vào Các file trong đấy phải có têngiống với tên của các Controller Mục đích là Joomla! dựa vào các tênfile này để đặt tên cho các class trong mỗi file
- Thư mục “views”: Trong đây chứa các View và Layout để hiển thị chongười dùng những dữ liệu mà họ yêu cầu Mỗi một View tương ứng
Trang 36với một thư mục.Tên các thư mục trong View phải tương ứng với têncủa Model.
- Thư mục “views/test”: Chứa View test mặc định của component
- File “view.html.php”: File này gọi các hàm trong Model thông quaphương thức getModel để lấy các dữ liệu cần thiết
- Thư mục “tmpl”: Chứa các Layout
- File “default.php”: Là Layout mặc định sẽ được gọi khi Controllerchưa chỉ định đến bất kỳ một Layout nào trong View Nhiệm vụ củaLayout này là hiện thị dữ liệu ra bên ngoài
3.1.3 Các thành phần trong mô-đun Xfirewall
- File xfirewall.php: có nhiệm vụ để hệ thống có thể gọi các chức năngcủa các Controller
Trang 37các View
$Xclass = 'XfirewallController'.$controller;
$controller = new $Xclass();
- File controller.php: mặc định hệ thống sẽ trỏ đến file này đển điềukhiển và gọi ra các chức năng nếu có Nếu có nhiều hơn một chức năng
có thể để các Controller vào trong thư mục controllers
parent:: construct();
}// điều khiển lấy các View, các Layout cần thiết Model cũng có thểđược lấy ở đây
function display(){
Trang 38JRequest::setVar('view', 'cpanel');
JRequest::setVar('layout', 'default');
parent::display();
}}
- File toolbar.xfirewall.php: Tạo các thanh menu cho Xfirewall
Ví dụ: hàm tạo menu phần cấu hình Xfirewall
Trang 39Hình 3.3 Các Controller của Xfirewall
Ví dụ: Controller điều khiển, quản lý nhật ký trang web
// lấy View và Model tương ứng để thực thi và hiển thị giao diện
Trang 40Hình 3.4 Các Model trong XfirewallModel thực thi truy vấn tới CSDL và lấy các dữ liệu cần thiết mỗi khiController gọi đến.
Ví dụ: Model lấy các dữ liệu log từ CSDL