C#:如何清理任意代码以防止恶意攻击?

时间:2018-04-14 20:32:41

标签: c#

我有一个C ++程序,允许用户输入任意C#(.NET兼容)脚本,然后在运行时解释这些脚本,并允许用户通过我的程序和程序在一定程度上自定义程序的功能。 #39; s C#(.NET)API。

当用户将他们的工作保存在我的程序中时,他们的脚本会随文件一起保存,并在下次运行程序并加载文件时自动执行/解释。

显然,如果用户想要使用恶意代码销毁他们自己的机器,那么他们就会拥有更多权力。但是,由于我的软件的性质,用户很有可能彼此共享文件...因此存在用户向其他用户发送恶意代码的可能性(通过此C#脚本界面)。

一些解决方法可能是警告用户,如果文件包含脚本,在自动执行之前等等......但仍然存在错误的空间......如果用户错误地忽略了这样的警告,他们仍然会自己打开去攻击。

有没有办法获取一堆任意C#代码,并弄清楚它是否包含任何代码,可用于删除/重命名/移动/修改/损坏系统文件?基本上是一种确保某些任意c#代码不会尝试更改系统上任何文件的方法吗?或者也许是一种简单地阻止解释器加载任何文件访问.NET程序集的方法吗?

1 个答案:

答案 0 :(得分:0)

没有已知的方法可以做到这一点。部分信任不起作用,几年前作为信任边界被弃用。如果代码真的是恶意的,那么你就会为分享开辟一个巨大的安全漏洞。

处理它的一种方法是创建一个共享站点,在该站点上阻止该站点上的脚本。您可以自动阻止带有“互联网标记”的文件上的脚本,并使其不是单击按钮,而是允许加载单个软件的真正复杂步骤,例如查看C#代码。作为示例,您可以查看chrome为不受信任的证书执行的操作。

最终,您只是打开一个安全漏洞,而且无法真正插入恶意代码。