当我浏览时,偶尔会收到警告,警告我网页上含有“可能会损坏我的电脑”的恶意软件。我非常困惑,为什么在 2010 年,浏览器仍然存在可能的漏洞并可能被破解。
我的问题是“为什么?”。我猜是因为浏览器大战中开发速度太快,而且测试不充分,但我也不确定。WebKit 肯定已经修复了 KHTML 中的所有问题,或者 Gecko 解决了 Netscape 引擎中的缺陷,而 IE 程序员则整理了他们的代码库以消除可能的缺陷?
(有点相关:哪种浏览器最安全?(基于研究和实践)。
答案1
复杂性,复杂性,复杂性。
现代浏览器支持
- 通过多种协议检索数据(http、https、ftp 等)
- 渲染多种不同的标记语言(纯 html(多个版本)、xhtml、带有 css 的 html......)
- 根据远程用户的请求存储数据和检索数据(cookie)
- 两个(或更多!)图灵完备编程环境来运行从外部提供的代码(javascript、java、也许是 flash......)
- 某种内部选项数据库
- (被盗broam 的深刻回答,所以去投票吧)支持插件架构,允许第三方代码访问浏览器内部
并且预计速度会很快,具有巧妙的缓存功能以使其更快,并具有富有表现力和强大的界面。
那里有很多事情要做,而且他们大而复杂软件。
答案2
人们还没有提到一个媒介:插件。浏览器可能是安全的,但插件可能存在很大的漏洞……而像 Flash 这样无处不在的插件……漏洞百出,伙计。
答案3
这里有很多答案,都涉及不同的原因,但根本答案是“因为钱在那里。”
许多其他软件可能存在类似或更多数量的错误,但它们通常无法被利用,因为您需要说服用户将它们暴露在狂野的互联网上。
答案4
部分问题在于浏览器(如文字处理器和 CAD 程序)的性能高度依赖于数据,并且由于数据种类(几乎)无限多,开发人员无法测试每一种组合以查看它是否会产生不良结果。
另一个方面是,为了获得用户和(更重要的是)网站所有者想要的交互性,浏览器必须执行代码。这是另一个弱点。