Mozilla安全团队于本周披露,他们已借由移除Firefox程序代码中的行内脚本(inline s)与eval()及类似的各种函数,以防范程序代码注射攻击。
所谓的行内脚本,是指被嵌入在HTML文件中,而非自外部文件加载的脚本程序。Mozilla内容安全技术负责人Christoph Kerschbaumer解释,Firefox不仅描绘网络上的网页,也附带许多内置的页面,通常称为about:pages,这类的页面可用来披露浏览器的内部状态,最明显的about :config提供了一个API,可用来检查与更新设置及偏好,让Firefox用户得以根据特定需求来打造Firefox实例。
由于about:pages也是通过HTML及 来实现,因此它们与一般的网页有着同样的安全模型,也无法免疫于程序代码注入攻击。假设黑客能够把程序代码注入about:pages中,黑客也许也能执行所注入的程序代码,意味着黑客将可代表用户执行任何行动。
于是,Mozilla重新编写Firefox所有的行内事件处理器,并将所有的行内 程序代码移到45种about: pages的打包文件中,以让Mozilla能够部署强大的内容安全策略,确保被注入的 无法执行。
如此一来, 程序代码只能在通过内部的chrome: protocol时,自打包的资源中加载才能执行。封锁了about: pages中任何的行内脚本,等于限制了执行任意程序代码的攻击表面,也替对抗程序代码注入攻击提供了第一道防线。
至于 函数eval(),或是其它类似的new Function、setTimeout()/setInterval()也都是既强大又危险的函数,它能够在与函数一致的安全脉络下,解析与执行任意字符串,它允许执行程序代码在运行时产生,或是存放在诸如DOM的非脚本区域,然而,eval()带来了重要的程序代码注入攻击表面,促使Mozilla决定禁用它。
因此Mozilla改写了系统特权脉络及Firefox程序库的父程序中,所有使用eval()或其它类似函数的段落,并加入了断言,以禁止在系统权限的脚本脉络中,使用相关函数。
目前Mozilla仍会在极少数、自程序库之外调用eval()的状态下放行该函数,但未来将继续密切观察与审核未知的eval() 实例,以强化Firefox的安全性。
继续阅读与本文标签相同的文章
当前90后们的社交状态
美团建立在平台商户亏损上的盈利,能否长久?
-
影视制作必备!这些好用的开源软件请收藏好!
2026-05-15栏目: 教程
-
在乌镇遇见5G 预见美好未来
2026-05-15栏目: 教程
-
微信绑上了银行卡,这两个设置必须要关闭,不然可能会自动扣钱
2026-05-15栏目: 教程
-
怎么恢复微信聊天记录?新版微信恢复教程
2026-05-15栏目: 教程
-
微信聊天记录删除了怎么恢复?这些方法能够快速解决
2026-05-15栏目: 教程
