Firefox是怎样解决内存安全的?

2020 年 3 月 10 日

Firefox是怎样解决内存安全的?

对于像 Firefox 这样复杂且高度优化的系统,内存安全是最大的安全挑战之一。Firefox 主要是用 C 和 C++ 编写的。众所周知,这些语言很难安全地使用,因为任何错误都有可能导致程序完全崩溃。

Firefox 软件工程师 Nathan Froyd 写道,“我们努力寻找并消除内存风险,但也在改进 Firefox 代码库,以便在更深的层次上解决这些问题。”

截至目前,Firefox 主要关注两项技术:

  1. 将代码分解成多个沙箱进程,减少特权
  2. 用一门安全的语言去重写代码,比如 Rust

一种新方法

“虽然我们继续在 Firefox 中使用沙箱和 Rust,但它们各有局限性。对已有的大型组件,进程级沙箱很有效,但这会消耗大量系统资源,因此必须谨慎使用。”Nathan Froyd 写道。

虽然 Rust 是轻量级的,但是重写现有的数百万行 C++ 代码是一件“劳神费力”的事。

Graphite 字形库为例,Firefox 用它来正确呈现某些复杂字体。它太小了,不适合“放入”自己的进程中。

然而,如果发现内存风险,即使是站点隔离的进程架构也无法阻止恶意字体破坏加载它的页面。同时,重写和维护这种领域专用的代码并不是 Firefox 有限工程资源的理想用法。

如今,Firefox 在“军火库”中加入第三种方法。

原文链接:【 https://www.infoq.cn/article/zzB4a6QpWbcrfsPKTSFg 】。未经作者许可,禁止转载。

登录后可解锁全站优质内容

免费畅享技术公开课、顶尖技术团队访谈、一线互联网大厂技术实践

文章
视频
电子书
研究报告
立即登录
2020 年 3 月 10 日 07:30 1171
用户头像

发布了 0 篇内容,共 1030 次阅读,收获喜欢 0 次。

关注

评论 1 条评论

发布
用户头像
曾firefox的忠实用户,但内存泄漏问题让人困惑啊.
2020 年 03 月 11 日 10:27
回复
没有更多评论了
发现更多内容

猿灯塔:spring Boot Starter开发及源码刨析(七)

猿灯塔

探索无限潜能,英特尔神经拟态计算除了有“嗅觉”还能有“触觉”

飞天鱼2017

linux上强大的字符串匹配工具详解-grep

X先生

Shell grep

如何进行需求梳理及埋点方案设计

易观大数据

信创舆情一线--十五部门印发指导意见进一步促进服务型制造发展

统小信uos

如何帮助技术员工高效成长?这几家企业的做法值得借鉴

极客时间企业版

研发管理 研发团队培训

数十家技术社区联名推荐的GeekOnline来了!

Geek_116789

Python的四种作用域及调用顺序

Young先生

Python 局部作用域 全局作用域

数据分析师完整的指标体系构建 (干货)

博文视点Broadview

数据挖掘 读书笔记 数据分析 数据 求职

腾讯面了五轮,面委挂了,挂的原因让大家唏嘘...

程序员生活志

腾讯 面试

单例模式的几种写法你用的哪种?

Java小咖秀

设计模式 23种设计模式 java;

第六周总结

Geek_a327d3

Idea中关于Js中的一些警告

阡陌r

30分钟学会应用正则表达式

墨灵

正则表达式 前端进阶训练营

以中立性的立场看Severless的目标和流派

韩超

云原生 serverles

CAP原理

jason

计算机网络基础(四)---网络层-ARP协议与RARP协议

书旅

laravel 计算机网络 网络协议 计算机基础 网络层

一文快速掌握华为云IPv6基础知识及使用指南

华为云开发者社区

物联网中台 物联网 网络 华为云

解决方案|智能消防预警系统突破高层楼房限制

华为云开发者社区

AI 物联网 边缘计算 华为云

变性手术后,产品总监和当当网打起了官司

赵新龙

法律 判决书 案例

知乎,挣钱?果然有长尾效应

非著名程序员

程序员 副业 副业赚钱 知乎 好物推荐

我想模糊删除redis key🤔

山中兰花草

Java lua redis 面试 批量任务

聊聊Dubbo(二):简单入门

猿灯塔

技术科普丨服务发现和负载均衡的来龙去脉

华为云开发者社区

负载均衡 微服务 开发者工具 服务端 服务

朱嘉明:区块链成为经济转型、形成产业新业态的技术手段

CECBC区块链专委会

第六周作业

Geek_a327d3

区块链加持的家用摄像头能拯救你的隐私吗?

CECBC区块链专委会

寻找握剑的手,青睐懂行的人

脑极体

有趣的条漫版 HashMap,25岁大爷都能看懂

古时的风筝

hashmap

《北京市政务服务领域区块链应用创新蓝皮书(第一版)》正式发布

CECBC区块链专委会

图解:如何实现最小生成树

淡-蓝色

Java 数据结构 算法

Firefox是怎样解决内存安全的?-InfoQ