Tag: 信任

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

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

如何validation客户端应用程序是否信任从其发送的消息

基本问题 我怎么知道这是我的公共可访问(客户端)应用程序发送我的服务消息? 我如何知道冒充我的应用程序的其他应用程序并不是真的? 一些背景 目前,我们通过log4net和WCF将我们网站上发生的所有错误记录到数据库中。 这很有效,因为Web服务器(可从Web访问 – 部分受信任)通过可信关系向应用程序服务器上运行的WCF服务(无法从Web访问)报告错误。 因此,我们知道所有错误日志都是真实的,我们需要对它们进行调查。 通过我们的新网站,我们计划利用SilverLight来实现一些目标。 我们面临的问题是如何将在Web使用者PC(不受信任)上运行的SilverLight应用程序的错误报告回我们的应用程序服务器(无法访问Web – 受信任)。 我们可以通过Web服务器上的服务外观进行客户端通信来解决应用服务器的不可访问性问题,所以不用担心。 当我们需要确保发送消息的应用程序确实是我们的应用程序而不仅仅是模仿者时,就会出现问题。 一些想法 代码将使用C#编写,并在客户端PC上本地运行的SilverLight应用程序中运行,因此我们无法保证它不会被反编译并用于向我们的服务发送虚假消息。 以上意味着我们无法使用传统的对称加密,因为我们无法将私钥存储在应用程序中(它可以被反编译)。 同样,我们不能使用非对称加密,因为它可能只是被冒充(攻击者只能使用存储的公钥对消息进行签名并发送它们 – 消息看起来真实) 在此应用程序的情况下,没有用户身份validation,因此我们不能使用它来为我们提供信任。 是的,我知道这是错误的,错误日志比应用程序显示的数据更好地受到保护,但事实是这样:) 任何想法或帮助将不胜感激!