Các giải pháp lập trình CSharp- P64
Số trang: 10
Loại file: pdf
Dung lượng: 2.65 MB
Lượt xem: 4
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:
Các giải pháp lập trình CSharp- P64: Các giải pháp lập trình C# khảo sát chiều rộng của thư viện lớp .NET Framework và cung cấp giải pháp cụ thể cho các vấn đềthường gặp. Mỗi giải pháp được trình bày theo dạng “vấn đề/giải pháp” một cách ngắn gọn và kèm theo là các ví dụ mẫu.
Nội dung trích xuất từ tài liệu:
Các giải pháp lập trình CSharp- P64 521 Chương 13: Bảo mật nắm được các mặt hạn chế của một thư viện mà bạn muốn gọi từ mã lệnh của bạn. Sử dụng công cụ Permissions View (Permview.exe—được cấp cùng với .NET Framework SDK).Để cấu hình chính sách bảo mật một cách phù hợp, bạn cần biết các nhu cầu quyền truy xuấtmã lệnh (code access permission requirements) của các assembly mà bạn dự định sẽ chạy.Điều này đúng cho cả các thư viện và các assembly thực thi được truy xuất từ ứng dụng củabạn. Đối với thư viện, bạn cần biết assembly loại bỏ những quyền nào để không sử dụng thưviện này để thực hiện một hành động bị hạn chế (sẽ dẫn đến ngoại lệSystem.Security.SecurityException).Công cụ Permview.exe cung cấp một cơ chế đơn giản mà thông qua đó, bạn có thể xem cácyêu cầu quyền khai báo (declarative permission request) được tạo bên trong một assembly—bao gồm yêu cầu tối thiểu (minimum request), yêu cầu tùy chọn (optional request), và yêu cầuloại trừ (refusal request). Ví dụ, lớp dưới đây khai báo một cầu tối thiểu, một yêu cầu tùychọn, và một yêu cầu loại trừ:using System.Net;using System.Security.Permissions;// Yêu cầu quyền tối thiểu: SocketPermission.[assembly:SocketPermission(SecurityAction.RequestMinimum, Unrestricted = true)]// Yêu cầu quyền tùy chọn: SecurityPermission.[assembly:SecurityPermission(SecurityAction.RequestOptional, Unrestricted = true)]// Yêu cầu loại trừ quyền: FileIOPermission.[assembly:SecurityPermission(SecurityAction.RequestRefuse, Unrestricted = true)]public class PermissionViewExample { public static void Main() { // Làm gì đó... }}Thực thi lệnh permview PermissionViewExample.exe sẽ sinh ra kết xuất như sau. Mặc dùkhông mấy thân thiện nhưng bạn vẫn có thể đọc kết xuất để xác định các yêu cầu quyền đượctạo bởi assembly. Mỗi kiểu trong ba kiểu yêu cầu quyền—tối thiểu, tùy chọn, và loại trừ—được liệt kê dưới một tiêu đề riêng và được kết cấu ở dạng XML của một đối tượngSystem.Security.PermissionSet.522Chương 13: Bảo mậtMicrosoft (R) .NET Framework Permission Request Viewer.Version 1.1.4322.510Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.minimal permission set: optional permission set: refused permission set: Bằng cách chỉ định đối số /decl khi chạy tiện ích Permview.exe, bạn có thể xem tất cả các lệnh bảo mật khai báo (declarative security statement) nằm trong một assembly. Việc này cho thấy rõ những gì assembly thực hiện bên trong và cho phép bạn cấu hình chính sách bảo mật một cách phù hợp. Tuy nhiên, Permview.exe không hiển thị các thao tác bảo mật bắt buộc (imperative security operation) nằm trong một assembly. Hiện không có cách nào để trích và tổng kết các thao tác bảo mật bắt buộc được thực thi bên trong một assembly.7. Xác định mã lệnh có quyền nào đó lúc thực thi hay không Bạn cần xác định assembly của bạn có một quyền cụ thể nào đó lúc thực thi hay không. 523 Chương 13: Bảo mật Tạo và cấu hình quyền mà bạn muốn kiểm tra rồi truyền nó cho phương thức tĩnh IsGranted của lớp System.Security.SecurityManager.Sử dụng yêu cầu quyền tối thiểu, bạn có thể bao đam răng bộ thực thi cấp cho assembly tậpcác quyền đã được chỉ định; nếu mã lệnh của bạn đang chạy, bạn có thể chắc rằng nó có cácquyền tối thiểu đã được yêu cầu. Tuy nhiên, bạn có thể muốn hiện thực một chức năng có tính“cơ hội” sao cho ứng dụng có thể cung cấp chức năng đó chỉ khi bộ thực thi cấp cho assemblycủa bạn các quyền phu hợp. Cách tiếp cận này được chính thức hóa một phần bằng các yêucầu quyền tùy chọn, cho phép bạn định nghĩa một tập các quyền mà mã lệnh của bạn có thểtân dụng nếu chính sách bảo mật cấp chúng, nhưng lại không thiết yếu đôi với sư vân hànhthành công cua ma lênh (mục 13.5 đã trình bày chi tiết về các yêu cầu quyền tùy chọn).Vấn đề đối với các yêu cầu quyền tùy chọn là bộ thực thi không có khả năng báo choassembly rằng nó đã cấp những quyền nào. Bạn có thể sử dụng một thao tác được-bảo-vệ vàthất bại một cách êm xuôi khi lời gọi này dẫn đến ngoại lệSystem.Security.SecurityException. Tuy nhiên, sẽ hiệu quả hơn khi xác định xem bạn cócác quyền cần thiết hay không. Sau đó, bạn có thể xây dưng logic vào trong mã lệnh để tránhgọi phai các thành viên được-bảo-vệ mà sẽ gây ra stack walk và dựng nên các ngoại lệ bảomật. Đoạn mã dưới đây trình bày cách sử dụng phương thức IsGranted để xác định xemassembly hiện tại có quyền ghi vào thư mục C:\Data hay không. Bạn có thể tạo một lời gọinhư thế mỗi khi bạn cần kiểm tra quyền, nhưng sẽ hiệu quả hơn nếu sử dụng môt giá trị luậnlý để thiết lập một cờ cấu hình cho biết có cho phép người dùng lưu file hay không.// Định nghĩa một biến luận lý cho biết assembly có quyền// truy xuất ghi đối với thư mục C:\Data hay không.bool canWrite = false;// Tạo và cấu hình một đối tượng FileIOPermission mô tả quyền// truy xuất ghi đối với thư mục C:\Data.System.Security.Permissions.FileIOPermission fileIOPerm = new System.Security.Permissions.FileIOPermission( System.Security.Permissions.FileIOPermissionAccess.Write, @C:\Data);// Kiểm tra assembly hiện tại có quyền đã được chỉ định hay không.canWrite = System.Security.SecurityManager.IsGranted(fileIOPerm);8. Hạn chế ai đó thừa kế các lớp của bạn và chép đè các thành viên lớp Bạn cần kiểm soát những ai có thể thừa kế các lớp của bạn thông qua sự thừa kế (inheritance) và một l ...
Nội dung trích xuất từ tài liệu:
Các giải pháp lập trình CSharp- P64 521 Chương 13: Bảo mật nắm được các mặt hạn chế của một thư viện mà bạn muốn gọi từ mã lệnh của bạn. Sử dụng công cụ Permissions View (Permview.exe—được cấp cùng với .NET Framework SDK).Để cấu hình chính sách bảo mật một cách phù hợp, bạn cần biết các nhu cầu quyền truy xuấtmã lệnh (code access permission requirements) của các assembly mà bạn dự định sẽ chạy.Điều này đúng cho cả các thư viện và các assembly thực thi được truy xuất từ ứng dụng củabạn. Đối với thư viện, bạn cần biết assembly loại bỏ những quyền nào để không sử dụng thưviện này để thực hiện một hành động bị hạn chế (sẽ dẫn đến ngoại lệSystem.Security.SecurityException).Công cụ Permview.exe cung cấp một cơ chế đơn giản mà thông qua đó, bạn có thể xem cácyêu cầu quyền khai báo (declarative permission request) được tạo bên trong một assembly—bao gồm yêu cầu tối thiểu (minimum request), yêu cầu tùy chọn (optional request), và yêu cầuloại trừ (refusal request). Ví dụ, lớp dưới đây khai báo một cầu tối thiểu, một yêu cầu tùychọn, và một yêu cầu loại trừ:using System.Net;using System.Security.Permissions;// Yêu cầu quyền tối thiểu: SocketPermission.[assembly:SocketPermission(SecurityAction.RequestMinimum, Unrestricted = true)]// Yêu cầu quyền tùy chọn: SecurityPermission.[assembly:SecurityPermission(SecurityAction.RequestOptional, Unrestricted = true)]// Yêu cầu loại trừ quyền: FileIOPermission.[assembly:SecurityPermission(SecurityAction.RequestRefuse, Unrestricted = true)]public class PermissionViewExample { public static void Main() { // Làm gì đó... }}Thực thi lệnh permview PermissionViewExample.exe sẽ sinh ra kết xuất như sau. Mặc dùkhông mấy thân thiện nhưng bạn vẫn có thể đọc kết xuất để xác định các yêu cầu quyền đượctạo bởi assembly. Mỗi kiểu trong ba kiểu yêu cầu quyền—tối thiểu, tùy chọn, và loại trừ—được liệt kê dưới một tiêu đề riêng và được kết cấu ở dạng XML của một đối tượngSystem.Security.PermissionSet.522Chương 13: Bảo mậtMicrosoft (R) .NET Framework Permission Request Viewer.Version 1.1.4322.510Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.minimal permission set: optional permission set: refused permission set: Bằng cách chỉ định đối số /decl khi chạy tiện ích Permview.exe, bạn có thể xem tất cả các lệnh bảo mật khai báo (declarative security statement) nằm trong một assembly. Việc này cho thấy rõ những gì assembly thực hiện bên trong và cho phép bạn cấu hình chính sách bảo mật một cách phù hợp. Tuy nhiên, Permview.exe không hiển thị các thao tác bảo mật bắt buộc (imperative security operation) nằm trong một assembly. Hiện không có cách nào để trích và tổng kết các thao tác bảo mật bắt buộc được thực thi bên trong một assembly.7. Xác định mã lệnh có quyền nào đó lúc thực thi hay không Bạn cần xác định assembly của bạn có một quyền cụ thể nào đó lúc thực thi hay không. 523 Chương 13: Bảo mật Tạo và cấu hình quyền mà bạn muốn kiểm tra rồi truyền nó cho phương thức tĩnh IsGranted của lớp System.Security.SecurityManager.Sử dụng yêu cầu quyền tối thiểu, bạn có thể bao đam răng bộ thực thi cấp cho assembly tậpcác quyền đã được chỉ định; nếu mã lệnh của bạn đang chạy, bạn có thể chắc rằng nó có cácquyền tối thiểu đã được yêu cầu. Tuy nhiên, bạn có thể muốn hiện thực một chức năng có tính“cơ hội” sao cho ứng dụng có thể cung cấp chức năng đó chỉ khi bộ thực thi cấp cho assemblycủa bạn các quyền phu hợp. Cách tiếp cận này được chính thức hóa một phần bằng các yêucầu quyền tùy chọn, cho phép bạn định nghĩa một tập các quyền mà mã lệnh của bạn có thểtân dụng nếu chính sách bảo mật cấp chúng, nhưng lại không thiết yếu đôi với sư vân hànhthành công cua ma lênh (mục 13.5 đã trình bày chi tiết về các yêu cầu quyền tùy chọn).Vấn đề đối với các yêu cầu quyền tùy chọn là bộ thực thi không có khả năng báo choassembly rằng nó đã cấp những quyền nào. Bạn có thể sử dụng một thao tác được-bảo-vệ vàthất bại một cách êm xuôi khi lời gọi này dẫn đến ngoại lệSystem.Security.SecurityException. Tuy nhiên, sẽ hiệu quả hơn khi xác định xem bạn cócác quyền cần thiết hay không. Sau đó, bạn có thể xây dưng logic vào trong mã lệnh để tránhgọi phai các thành viên được-bảo-vệ mà sẽ gây ra stack walk và dựng nên các ngoại lệ bảomật. Đoạn mã dưới đây trình bày cách sử dụng phương thức IsGranted để xác định xemassembly hiện tại có quyền ghi vào thư mục C:\Data hay không. Bạn có thể tạo một lời gọinhư thế mỗi khi bạn cần kiểm tra quyền, nhưng sẽ hiệu quả hơn nếu sử dụng môt giá trị luậnlý để thiết lập một cờ cấu hình cho biết có cho phép người dùng lưu file hay không.// Định nghĩa một biến luận lý cho biết assembly có quyền// truy xuất ghi đối với thư mục C:\Data hay không.bool canWrite = false;// Tạo và cấu hình một đối tượng FileIOPermission mô tả quyền// truy xuất ghi đối với thư mục C:\Data.System.Security.Permissions.FileIOPermission fileIOPerm = new System.Security.Permissions.FileIOPermission( System.Security.Permissions.FileIOPermissionAccess.Write, @C:\Data);// Kiểm tra assembly hiện tại có quyền đã được chỉ định hay không.canWrite = System.Security.SecurityManager.IsGranted(fileIOPerm);8. Hạn chế ai đó thừa kế các lớp của bạn và chép đè các thành viên lớp Bạn cần kiểm soát những ai có thể thừa kế các lớp của bạn thông qua sự thừa kế (inheritance) và một l ...
Tìm kiếm theo từ khóa liên quan:
kinh nghiệm lập trình CSharp mẹo lập trình ngôn ngữ lập trình C giáo trình lập trình CSharp lập trình java lập trình căn bản CSharpGợi ý tài liệu liên quan:
-
Thủ thuật giúp giải phóng dung lượng ổ cứng
4 trang 209 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 202 0 0 -
101 trang 199 1 0
-
Tìm hiểu về ngôn ngữ lập trình C: Phần 1 - Quách Tuấn Ngọc
211 trang 149 0 0 -
161 trang 129 1 0
-
142 trang 129 0 0
-
Giáo trình Vi điều khiển PIC: Phần 1
119 trang 116 0 0 -
Bài giảng Phương pháp lập trình: Chương 9 - GV. Từ Thị Xuân Hiền
36 trang 109 0 0 -
Excel add in development in c and c phần 9
0 trang 106 0 0 -
78 trang 100 0 0