Aspect-Oriented Programming và bảo mật
Số trang: 3
Loại file: pdf
Dung lượng: 106.75 KB
Lượt xem: 18
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
AOP là gì?Nhiều người không thực sự hiểu AOP là gì và cho rằng AOP là sự thay thế cho ngôn ngữ lập trình hướng đối tượng (OOP), chính vì vậy mà chúng tôi cần giải thích sâu. Khái niệm này rõ ràng hoàn toàn sai: AOP dựa trên OOP. Nó tập trung vào các khái niệm cross-cutting hoặc các khía cạnh –phần mã chung cho các đối tượng khác nhau. Sử dụng một ngôn ngữ AOP (như AspectJ) hoặc các thư viện (như Spring), những người lập trình có thể viết mã cho chức năng này, sau đó định...
Nội dung trích xuất từ tài liệu:
Aspect-Oriented Programming và bảo mật Aspect-Oriented Programming và bảo mậtAOP là gì?Nhiều người không thực sự hiểu AOP là gì và cho rằng AOP là sự thay thế chongôn ngữ lập trình hướng đối tượng (OOP), chính vì vậy mà chúng tôi cần giảithích sâu. Khái niệm này rõ ràng hoàn toàn sai: AOP dựa trên OOP. Nó tập trungvào các khái niệm cross-cutting hoặc các khía cạnh –phần mã chung cho các đốitượng khác nhau. Sử dụng một ngôn ngữ AOP (như AspectJ) hoặc các thư viện(như Spring), những người lập trình có thể viết mã cho chức năng này, sau đó địnhnghĩa vị trí đan kết nó vào trong các đối tượng đang tồn tại. Một ví dụ cần phảiđược đưa ra để làm sáng tỏ cho các bạn về vấn đề này. Giả dụ chung ta có các lớpJava dưới đây:Ở đây chúng ta có thể thấy hàm ghi (logging) được nhân đôi thành hai lớp khácnhau. Với AOP, chúng ta cũng thực hiện như vậy (lưu ý cú pháp ở đây đã đượcđơn giản hóa để tạo sự rõ ràng rễ hiểu):Lúc này chúng ta tạo một khía cạnh LogInterceptor để có thể xen trước và sau bấtkỳ một lời gọi nào đến class (bỏ qua những chi tiết về cách xen xảy ra như thếnào). Chúng ta cần phải tạo một proxy cho các lời gọi. Thứ quan trọng cần lưu ývề ví dụ này là cả MyFirstClass và MySecondClass đều không biết và không phụthuộc vào LogInterceptor. Trong ứng dụng thực mà mã logging có thể được saochép thành hàng trăm file class khác nhau, chính vì vậy việc tập trung nó giốngnhư vậy sẽ làm giảm số lượng mã nguồn một cách đáng kể. Ở đây có thể thực hiệnrẽ nhánh vì chúng ta có thể bổ sung các khía cạnh bảo mật cho các ứng dụng màkhông cần thay đổi mã đã tồn tại từ trước.Những gợi ý bảo mậtMột vài khái niệm cross-cutting có liên quan đến bảo mật được tìm thấy rải rácthông qua logic ứng dụng: Logging Access control Error handling Transaction management Session management (trong một số trường hợp) Input/output validationSử dụng AOP, chúng ta có thể tách riêng một đoạn lớn các khái niệm ra khỏi cảmảng mã lớn và tập hợp chúng lại. Có một số trường hợp bạn sẽ không thể tập hợp(ví dụ như việc quản lý lỗi), nhưng lớn hơn, AOP cho phép các chuyên gia pháttriển có thể tập hợp trên Plain Old Java Object (hoặc bất cứ ngôn ngữ gì mà bạnđang sử dụng). POJO về bản chất là mã các chuyên gia phát triển đã được học đểviết ngay từ những ngày ban đầu; mã này chỉ tập trung vào sự logic và không cócác khái niệm khác như sự hợp lệ hóa đầu vào, bản ghi, điều khiển truy cập và vấnđề quản lý lỗi. Mã càng rõ ràng hơn thì càng ít bị lỗi hơn (trong đó có cả các lỗibảo mật).Một ngụ ý khác về vấn đề này là các chuyên gia lão luyện có thể chịu trách nhiệmcho việc viết mã các khía cạnh bảo mật. Đây chính là những người đã được đàotạo một cách đặc biệt và có kinh nghiệm trong lĩnh vực như quản lý session hoặcđiều khiển truy cập, có thể quản lý phần lớn nhất của mã đó trong toàn bộ một dựán hoặc một thành phần của dự án.Ví dụ thực: Bổ sung sự hợp lệ hóa đầu vào cho ứng dụng có trướcRõ ràng, việc sử dụng AOP với toàn bộ tiềm lực của nó trên các ứng dụng đangtồn tại trước sẽ cần phải gần như viết lại ứng dụng – thứ thường không mấy khảthi. Những điều thú vị đối với cộng đồng bảo mật là cách sử dụng AOP trong mộtcơ sở mã đã tồn tại trước đó cho các chức năng bảo mật không được bổ sung.Chúng ta hãy xem xét một chút vào ứng dụng Customer Relationship Management(CRM) đang tồn tại, ứng dụng này có một số lỗ hổng XSS (Cross-site Scripting).Khi nhập một đầu vào các hàng hóa mới một trong các biểu mẫu web với môtả alert(document.cookie).Chúng ta nhận được:Biểu mẫu này là một lỗ hổng XSS. Chúng tôi biết có một số phần mã dính líu đếnlỗ hổng này. Chính vì vậy chúng tôi quyết định bảo vệ đối tượng NewLead tronglớp doanh nghiệp bằng cách thêm sự hợp lệ hóa đầu vào ở bất cứ thời điểm nàomà phương pháp setter trên thuộc tính String bị gọi. Đây là một mảng cắt nhỏ củalớp NewLead có một số phương pháp sette ...
Nội dung trích xuất từ tài liệu:
Aspect-Oriented Programming và bảo mật Aspect-Oriented Programming và bảo mậtAOP là gì?Nhiều người không thực sự hiểu AOP là gì và cho rằng AOP là sự thay thế chongôn ngữ lập trình hướng đối tượng (OOP), chính vì vậy mà chúng tôi cần giảithích sâu. Khái niệm này rõ ràng hoàn toàn sai: AOP dựa trên OOP. Nó tập trungvào các khái niệm cross-cutting hoặc các khía cạnh –phần mã chung cho các đốitượng khác nhau. Sử dụng một ngôn ngữ AOP (như AspectJ) hoặc các thư viện(như Spring), những người lập trình có thể viết mã cho chức năng này, sau đó địnhnghĩa vị trí đan kết nó vào trong các đối tượng đang tồn tại. Một ví dụ cần phảiđược đưa ra để làm sáng tỏ cho các bạn về vấn đề này. Giả dụ chung ta có các lớpJava dưới đây:Ở đây chúng ta có thể thấy hàm ghi (logging) được nhân đôi thành hai lớp khácnhau. Với AOP, chúng ta cũng thực hiện như vậy (lưu ý cú pháp ở đây đã đượcđơn giản hóa để tạo sự rõ ràng rễ hiểu):Lúc này chúng ta tạo một khía cạnh LogInterceptor để có thể xen trước và sau bấtkỳ một lời gọi nào đến class (bỏ qua những chi tiết về cách xen xảy ra như thếnào). Chúng ta cần phải tạo một proxy cho các lời gọi. Thứ quan trọng cần lưu ývề ví dụ này là cả MyFirstClass và MySecondClass đều không biết và không phụthuộc vào LogInterceptor. Trong ứng dụng thực mà mã logging có thể được saochép thành hàng trăm file class khác nhau, chính vì vậy việc tập trung nó giốngnhư vậy sẽ làm giảm số lượng mã nguồn một cách đáng kể. Ở đây có thể thực hiệnrẽ nhánh vì chúng ta có thể bổ sung các khía cạnh bảo mật cho các ứng dụng màkhông cần thay đổi mã đã tồn tại từ trước.Những gợi ý bảo mậtMột vài khái niệm cross-cutting có liên quan đến bảo mật được tìm thấy rải rácthông qua logic ứng dụng: Logging Access control Error handling Transaction management Session management (trong một số trường hợp) Input/output validationSử dụng AOP, chúng ta có thể tách riêng một đoạn lớn các khái niệm ra khỏi cảmảng mã lớn và tập hợp chúng lại. Có một số trường hợp bạn sẽ không thể tập hợp(ví dụ như việc quản lý lỗi), nhưng lớn hơn, AOP cho phép các chuyên gia pháttriển có thể tập hợp trên Plain Old Java Object (hoặc bất cứ ngôn ngữ gì mà bạnđang sử dụng). POJO về bản chất là mã các chuyên gia phát triển đã được học đểviết ngay từ những ngày ban đầu; mã này chỉ tập trung vào sự logic và không cócác khái niệm khác như sự hợp lệ hóa đầu vào, bản ghi, điều khiển truy cập và vấnđề quản lý lỗi. Mã càng rõ ràng hơn thì càng ít bị lỗi hơn (trong đó có cả các lỗibảo mật).Một ngụ ý khác về vấn đề này là các chuyên gia lão luyện có thể chịu trách nhiệmcho việc viết mã các khía cạnh bảo mật. Đây chính là những người đã được đàotạo một cách đặc biệt và có kinh nghiệm trong lĩnh vực như quản lý session hoặcđiều khiển truy cập, có thể quản lý phần lớn nhất của mã đó trong toàn bộ một dựán hoặc một thành phần của dự án.Ví dụ thực: Bổ sung sự hợp lệ hóa đầu vào cho ứng dụng có trướcRõ ràng, việc sử dụng AOP với toàn bộ tiềm lực của nó trên các ứng dụng đangtồn tại trước sẽ cần phải gần như viết lại ứng dụng – thứ thường không mấy khảthi. Những điều thú vị đối với cộng đồng bảo mật là cách sử dụng AOP trong mộtcơ sở mã đã tồn tại trước đó cho các chức năng bảo mật không được bổ sung.Chúng ta hãy xem xét một chút vào ứng dụng Customer Relationship Management(CRM) đang tồn tại, ứng dụng này có một số lỗ hổng XSS (Cross-site Scripting).Khi nhập một đầu vào các hàng hóa mới một trong các biểu mẫu web với môtả alert(document.cookie).Chúng ta nhận được:Biểu mẫu này là một lỗ hổng XSS. Chúng tôi biết có một số phần mã dính líu đếnlỗ hổng này. Chính vì vậy chúng tôi quyết định bảo vệ đối tượng NewLead tronglớp doanh nghiệp bằng cách thêm sự hợp lệ hóa đầu vào ở bất cứ thời điểm nàomà phương pháp setter trên thuộc tính String bị gọi. Đây là một mảng cắt nhỏ củalớp NewLead có một số phương pháp sette ...
Tìm kiếm theo từ khóa liên quan:
Điều hành bảo mật mẹo bảo mật kĩ năng bảo mật bí quyết bảo mật tài liệu về bảo mật bảo mật máy tínhTài liệu có liên quan:
-
Giáo trình Bảo trì hệ thống và cài đặt phần mềm
68 trang 222 0 0 -
Các cách phát hiện PC và email của bạn có bị theo dõi hay không?
8 trang 85 0 0 -
Giáo trình tin học : Tìm hiểu một sơ đồ chữ kí số phần 8
6 trang 72 0 0 -
Ứng dụng công nghệ domain controller bảo mật máy tính người dùng
4 trang 48 0 0 -
CompTIA A+ Complete Study Guide phần 4
99 trang 48 0 0 -
Mã hóa dữ liệu và thư mục với EFS trong Windows 8
8 trang 43 0 0 -
Giáo trình An toàn và bảo mật thông tin: Phần 1
85 trang 43 0 0 -
wiley Hacking Firefox ™ More Than 150 Hacks, Mods, and Customizations phần 9
45 trang 43 0 0 -
7 trang 40 0 0
-
Cách bảo mật cho máy chủ web Apache
10 trang 39 0 0