Tag: 代码 访问 安全

.NET / Security:限制运行时加载的程序集访问某些API

在shell应用程序中,我需要能够在运行时加载和执行其他.NET程序集,但不能给予它们完全的信任。 本质上,我想限制它们(加载的程序集)接触任何系统资源(线程,网络等),唯一的例外是隔离存储。 但是,来自“我”的程序集需要以完全信任的方式执行。 我一直在考虑代码访问安全性,但我不太确定这是我应该使用的。 你会怎么做?

在Windows上禁用应用程序的证书吊销检查

我有一个.NET 3.5桌面应用程序,当它所在的测试机器不在办公室时,它已经显示出function的周期性减速。 我设法在没有互联网连接的情况下在办公室的机器上复制错误,但只有当我使用ANTS性能分析器时,我才能更清楚地了解正在发生的事情。 在ANTS中,我看到“等待同步”需要16秒,这与NHibernate尝试加载System.Data.SqlServerCE.dll程序集时在应用程序中看到的延迟相对应。 如果我立即再次尝试动作它会毫无延迟地工作,但如果我离开它5分钟,那么下次我尝试它时再次加载会很慢。 到目前为止,我的研究似乎是因为SqlServerCE dll已签名,因此系统正在尝试连接以获取证书吊销列表并超时。 禁用“Internet选项”LAN设置中的“自动检测设置”设置会使问题消失,同时禁用“检查发布者证书吊销”。 但是,部署此应用程序的管理员不会对在每台计算机或每个用户上禁用证书检查的想法感到满意,因此我确实需要让应用程序级别禁用CRL检查工作。 .net 2.0中有一个记录良好的错误,它描述了这种行为,并提供了一个配置文件元素的可能修复。 这对我来说不起作用,即使我使用.net 3.5。 SQLServerCE dll是由NHibernate动态加载的,我想知道它是动态的这个事实可能不知何故设置不起作用,但我不知道如何检查它。 任何人都可以提供有关配置设置可能不起作用的建议吗? 或者是否有另一种方法可以在应用程序级别禁用检查,也许是CAS策略设置,我可以使用它在应用程序安装时为应用程序设置例外? 或者我可以在应用程序中更改信任级别或类似的东西吗?