分享

苹果为何又如何在 iOS 上禁止 Safari 之外的应用使用 Nitro JIT 编译?

 quasiceo 2015-03-22
JIT编译需要底层系统支持动态代码生成,对操作系统来说这意味着要支持动态分配带有“可写可执行”权限的内存页。当一个应用程序拥有请求分配可写可执行内存页的权限时,它会比较容易受到攻击从而允许任意代码动态生成并执行,这样就让恶意代码更容易有机可乘。

Safari 是iOS内建的浏览器,而JavaScriptCore(又名Nitro)是其中的JavaScript引擎,负责JavaScript代码的执行。为了 提供流畅的浏览体验,苹果为JavaScriptCore开发了JIT编译器,并在iOS的Safari上开启。而为了减小由第三方代码引致被攻击的风 险,苹果禁止了第三方应用嵌入UIWebView时使用JavaScriptCore的JIT功能。

其实这JIT功能就像iOS上的照片、通信录之类的一样有应用粒度的权限控制。
于是在越狱了的iOS上其实JIT的权限也是可以打开的:How to enable the Nitro Javascript engine for Google Chrome
(但这里并不推荐越狱,只是讨论技术问题而已)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多