2010-05-26 14 views

cevap

15

FileSystemWatcher sınıf sınırsız CAS izinleri için bir bağlantı talebini vardır. Bu, doğrudan arayanın (yani, doğrudan sınıfı tüketiyorsanız kodunuzun) sınırsız izinlere sahip olduğunu doğrulayacağı anlamına gelir.

Ne yazık ki, bir bağlantı taleplerinin kullanılması, dolaylı arayanların (yani kodunuzu kodlayan kodların) izinlerinin bir bağlantı talebi tarafından doğrulanmadığından potansiyel güvenlik açıklarını açmaktadır. Bu, kısıtlı izinlere sahip dolaylı bir arayanın, yüksek düzeyde güvenilir olan kodunuzu, aksi takdirde gerçekleştirme izinlerine sahip olamayacağı şekilde, kendi adına kötü bir şey yapması için manipüle edebileceği anlamına gelir.

Bu tür bir saldırıyı önlemenin yollarından biri de, bir bağlantı talebi olan bir tür veya üye tüketen herhangi bir koda aynı izin için tam bir talep uygulamaktır. Bu, dolaylı arayanların aynı izin talebine tabi olmasını sağlayacak ve böylece kodunuz aracılığıyla kendi başlarına yapamayacakları bir şey yapamayacaklarını garanti edecektir. Bu tür bir tam talep uygulanması, FileSystemWatcher için MSDN örnek kodunda gösterilmekte olan şeydir.

+0

Henüz yeterince iyi anlamadığımı düşünüyorum. Örnek, 'PermissionSet ...' satırı olmadan düzgün çalışır. Kodun içeri girmesine nasıl yardımcı olur? Ayrıca 'FullTrust' ne anlama geliyor? Makine üzerindeki yönetici yetkisi veya söz konusu dosya/dizine tam erişim. – Jeff

+4

Özellik, kodunuzun çalışmasına yardımcı olmuyor. Bunun yerine, olmaması gerektiğinde çalışmasını engeller. "FullTrust", kısıtlanmamış Kod Erişimi Güvenliği izinlerini belirtir. Bunun kullanıcının hesabına verilen izinlerle ilgisi yoktur. Kod Erişimi Güvenliği, .NET tarafından sağlanan ve çalışan kod için verilen izinleri denetlemesini sağlayan ek bir güvenlik katmanıdır. Giriş için bkz. Http://msdn.microsoft.com/en-us/library/930b76w0(VS.71).aspx. –