C#/.Net web浏览器是否容易受到攻击?

C#/.Net web浏览器是否容易受到攻击?,c#,.net,clr,buffer-overflow,exploit,C#,.net,Clr,Buffer Overflow,Exploit,说.Net平台更安全是因为CLR可以防止缓冲区溢出攻击是正确的吗 假设在托管操作系统(如、或)中运行web浏览器,攻击者在技术上是否可能将IL代码注入应用程序 我需要担心在非托管应用程序中不可能发生的攻击吗?CLR(和JVM)可以防范很多常见的攻击,但这并不能消除所有威胁。CLR或任何库可能包含允许利用漏洞的bug。应用程序错误也可能允许利用漏洞。SQL注入是由于应用程序中缺少输入验证而可能发生的攻击的一个示例 大部分情况下,你是对的。具有安全类型系统(不仅仅是.NET或Java)的应用程序不允

说.Net平台更安全是因为CLR可以防止缓冲区溢出攻击是正确的吗

假设在托管操作系统(如、或)中运行web浏览器,攻击者在技术上是否可能将IL代码注入应用程序


我需要担心在非托管应用程序中不可能发生的攻击吗?

CLR(和JVM)可以防范很多常见的攻击,但这并不能消除所有威胁。CLR或任何库可能包含允许利用漏洞的bug。应用程序错误也可能允许利用漏洞。SQL注入是由于应用程序中缺少输入验证而可能发生的攻击的一个示例

大部分情况下,你是对的。具有安全类型系统(不仅仅是.NET或Java)的应用程序不允许应用程序违反这些约束

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

(顺便说一句,C#仍然可以执行不安全的操作,并将自己设置为执行任意代码。它非常麻烦,不太可能在实际应用程序中使用。)

如果托管浏览器允许加载任意代码,并且使用CLR作为安全环境,那么您会在托管浏览器中看到安全漏洞。虽然CLR生成的代码(即应用程序的JIT)是安全的,但加载程序和验证器本身通常用较低的语言编写。有几个安全漏洞(我想是.NET的2个),恶意形成的程序集可能会迫使实际的CLR执行任意代码。然而,这些都是相对罕见的问题,其表面积远小于其他情况

因此,是的,一个完全安全、受管理的浏览器本身不会成为这些特定漏洞的牺牲品。但这也意味着您必须以类似的方式编写和执行插件(Flash?)。最后,还有其他一些安全漏洞可以针对,但通常情况下,它们的严重性不如非托管应用程序。例如,跨站点脚本仍然是一个问题。但至少您不会有“查看文档可以执行任意代码”类型的问题