这是正确的说.网平台,是更加安全,因为CLR防止缓冲区溢出攻击?

假设有一个网浏览器上运行一个管理操作系统(喜欢 宇宙, SharpOS奇点),它在技术上可能的攻击者注IL码进入的应用程序?

我会担心的攻击,不可能在不受管理应用程序?

有帮助吗?

解决方案

在大多数情况下,你是正确的。一个安全的类型系统(不仅仅是.NET或Java)应用程序不允许应用程序违反了这些限制。

缓冲区溢出和其他许多远程代码攻击发生,因为这些语言和运行时的约束提供任何检查,也不能保证程序不会做这样的事情在内存中执行任意代码。安全系统验证代码是从这些影响自由。

(作为边注,C#仍然可以执行不安全的操作,并设置本身最多执行任意代码。这只是相当麻烦的,不可能在实际应用中使用。)

您会在管理浏览器中看到的安全漏洞,如果它让任意代码被加载,使用CLR作为一个安全的环境会。虽然CLR生成的代码(即应用程序的这些JIT过)将是安全的,加载器和检验自己通常被写在一个较低的语言。还有的是数(我想2 .NET?)的安全漏洞,其中一个恶意形成的组件可能会迫使实际CLR执行任意代码。然而,这些是相对罕见的问题,并且表面积远小于它会是否则。

所以,是的,一个完全安全的,可管理浏览器本身不会堕入这些特定的攻击。但是,这也意味着你必须有你的插件编写和以类似的方式执行(闪光?)。最后,还有可以有针对性的其他安全漏洞,但通常他们会比你用非托管应用程序找到那么严重。跨站点脚本,例如,将仍然是一个问题。但至少不会有“查看文档可以执行arbitary代码”类型的问题。

其他提示

在CLR(和JVM)对大量的普通攻击后卫,但这并不能消除所有威胁。在CLR或任何库可能包含漏洞,允许攻击。应用程序错误可能允许攻击也是如此。 SQL注入是一种攻击是可能的,因为缺乏应用程序输入验证的例子。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top