Tôi đang sử dụng VSTS 2008 + .Net 2.0 + C#. Và tôi đang chạy Code Analysis sau khi build. Tôi nhận được cảnh báo bảo mật khó hiểu sau đây. Đây là cảnh báo và mã liên quan, bất kỳ ý tưởng gì là sai? Nếu có cảnh báo bảo mật, cách khắc phục?cảnh báo bảo mật này có nghĩa là gì (lớp .Net Process)?
System.Diagnostics.Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo.FileName = "IExplore.exe";
myProcess.StartInfo.Arguments = @"default.html";
myProcess.StartInfo.Verb = "runas";
myProcess.Start();
cảnh báo: CA2122: Microsoft.Security: 'TestHtml()' gọi vào 'Process.Start()' trong đó có một LinkDemand. Bằng cách thực hiện cuộc gọi này, 'Process.Start()' được tiếp xúc gián tiếp với mã người dùng. Xem lại ngăn xếp cuộc gọi sau có thể vạch trần một cách để phá vỡ bảo vệ an ninh:
Cảm ơn, nhưng mã của bạn có xây dựng lỗi. Lỗi Tên 'True' không tồn tại trong ngữ cảnh hiện tại. Bất kỳ ý tưởng? Tôi đang sử dụng. Net 2.0 và .Net 2.0 không hỗ trợ nó? – George2
Hi blowdart, tôi có một số ý tưởng mới và tôi nghĩ rằng nó không phải là một lỗ hổng bảo mật. Giả sử phương thức Foo gọi TestHtml và TestHtml gọi Process.Start. Ngay cả khi TestHtml không được kích hoạt với LinkDemand, thì Process.Start được kích hoạt với LinkDemand, nó sẽ luôn kiểm tra sự cho phép của TestHtml (TestHtml là người gọi ngay lập tức). Vì vậy, ngay cả khi Foo không có đủ quyền, cuộc gọi từ TestHtml tới Process.Start sẽ không thành công. Vì vậy, tôi nghĩ rằng không có vấn đề an ninh. Có ý kiến gì không? – George2
@George, chỉ cần đoán bây giờ, nhưng nó sẽ là tốt hơn để kiểm tra các yêu cầu bảo mật càng sớm càng tốt, nếu TestHtml sẽ thay đổi bất kỳ trạng thái ứng dụng trước khi thất bại. – sisve