WebAssembly如何获得安全性

1、虚拟机

WebAssembly是第一个共享JavaScript VM的语言,而JavaScript VM在运行时是沙箱化的,同时经历了多年的检验和安全测试,确保了其安全性。

WebAssembly模块的可访问范围不超过JavaScript的访问范围,同时也会遵守相同的安全性规则,包括同源策略这样的增强规则。

2、线性内存

和桌面应用程序不同,WebAssembly模块对设备内存没有直接访问权限,而是运行时,环境在初始化过程中向模块传递一个ArrayBuffer。模块将这个ArrayBuffer当作线性内存来使用,WebAssembly框架执行检查以确保代码不会对这个数组进行越界操作。

3、函数指针

函数指针存储在Table段中,WebAssembly模块不能直接访问。代码会用索引值向WebAssembly框架提出访问某个项目的请求。然后框架访问内存,并代表代码执行这个项目。

4、执行栈

在C++中,执行栈与线性内存一起位于内存中,虽然C++代码不应该修改执行栈,但是它可以使用指针实现修改。WebAssembly的执行栈与线性内存是分离的,代码无法访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值