[译]安全的WebAssembly内存操作

什么是内存对象?

当一个WebAssembly模块被实例化时,它需要一个内存对象。我们可以创建一个新 WebAssembly.Memory 对象并将其传入。或者如果我们没传,那么引擎将创建一个内存对象并自动将其附加到该实例上。

所有 JS 引擎都会在内部创建一个ArrayBuffer。ArrayBuffer 是 JS 引用的 JavaScript 对象,JS 替我们为它分配内存。我们告诉它需要多少内存,它会创建我们需要大小的 ArrayBuffer 对象。

arraybuffer

数组的索引可以看作是内存地址。如果以后我们需要更多的内存空间,可以执行一种叫做 增长 的操作来扩大数组。

使用 JavaScript 的对象 ArrayBuffer 来操控 WebAssembly 的内存,达成了两个目的:

  1. 使在 JS 和 WebAssembly 之间互相传递数据更简单
  2. 有助于内存管理的安全性

在 JS 和 WebAssembly 之间传递数据

因为 ArrayBuffer 也只是一个 JavaScript 对象,这意味着 JavaScript 有足够的能力可以去操作内存里的字节。基于这种方式,WebAssembly 和 JavaScript 可以共享内存并来回传递值。

它们使用数组下标去定位内存块,而不是使用内存地址。

例如,WebAssembly 可以把一个字符串放进内存里。首先把字符串编码为字节。。

encode

然后把字节放进数组中。

然后它会将第一个索引(整数)返回给 JavaScript,所以 JavaScript 可以将字节取出来并使用它们。

return-index

目前为止,大多数 JavaScript 引擎都无法直接使用字节来工作,所以我们需要在 JS 这边使用某些方法把字节转化为有用的数据类型,比如字符串。

在某些浏览器中,我们可以使用 TextDecoderTextEncoder API。或者我们可以像 Emscripten 那样在代码中加入辅助函数,帮助我们完成这件事情。

use-bytes

以上是使用 JS 对象操作 WebAssembly 内存的第一个优点:可以直接通过内存互相传递数据

让内存访问更安全

使用 JavaScript 对象处理 WebAssembly 内存的另外一个好处就是:安全性。通过帮助防止浏览器级内存泄漏并提供内存隔离,它使事情更安全。

内存泄漏

当我们自己手动管理内存时,随时可能忘记清除它。这可能会导致系统内存不足最终内存溢出。

我们想象一下,如果一个 WebAssembly 模块实例可以直接访问内存,并且在该实例执行完成退出上下文时忘记释放该内存,那么将会导致内存泄露。但是现在由于内存对象是一个 JavaScript 对象,它的存在将由垃圾回收器追踪着(尽管并没有控制内容)。这意味着当 WebAssembly 模块实例离开执行上下文时,整个内存数组将会被回收掉。

gc

内存隔离

当人们得知 WebAssembly 模块可以直接访问内存时,这可能会让我们有点紧张。我们可能会以为 WebAssembly 模块可以定位和访问到它们本该不能访问的内存,但事实并非如此。

ArrayBuffer 对象边界会提供一个限制,这是 WebAssembly 模块能直接接触到的内存边界。

WebAssembly 可以直接获取该数组内部的字节,但它不能看到超出此数组边界的任何内容。

例如,内存中的任何其他JS对象(如全局window)都不能被 WebAssembly 访问。这对安全性非常重要。

无论何时在 WebAssembly 中进行读取或写操作时,引擎都会执行数组边界检查以确保地址位于 WebAssembly 实例的内存中。

如果代码尝试访问超出界限的地址,则引擎将引发异常,这保护了其余的内存。

随着信息技术的快速发展和互联网的普及,IT行业 成为一个非常热门的领域,也是目前就业前景非常广阔的领域之一。

IT行业是一个非常庞大和多样化的行业,包括软件开发、网络安全、数据分析、云计算等等领域。因此,就业前景也是非常广泛和多样化的,不同的领域和职位都具有不同的就业前景和发展机会。

在软件开发领域,由于软件已经成为现代社会不可或缺的一部分,因此对软件开发人才的需求也越来越大。特别是在移动应用、大数据、人工智能等领域,软件开发人才的需求更是迅速增长。因此,软件开发人才的就业前景非常广阔,尤其是那些熟练掌握多种编程语言和技术的人才。

有幸看到一篇这样一组数据。

根据这些我不得总结,it行业确实人才紧缺,

网络安全行业特点

1、就业薪资非常高,涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!

2、人才缺口大,就业机会多

2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年培养的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,现在从事网络安全行业的从业人员只有10W人。

行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

如果你对网络安全入门感兴趣,那么你点击这里👉CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

如果你对网络安全感兴趣,学习资源免费分享,保证100%免费!!!(嘿客入门教程)

学习资料分享

当然,只给予计划不给予学习资料的行为无异于耍流氓,### 如果你对网络安全入门感兴趣,那么你点击这里👉CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

如果你对网络安全感兴趣,学习资源免费分享,保证100%免费!!!(嘿客入门教程)

👉网安(嘿客)全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

img

👉网安(嘿客红蓝对抗)所有方向的学习路线****👈

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

img

学习资料工具包

压箱底的好资料,全面地介绍网络安全的基础理论,包括逆向、八层网络防御、汇编语言、白帽子web安全、密码学、网络安全协议等,将基础理论和主流工具的应用实践紧密结合,有利于读者理解各种主流工具背后的实现机制。

在这里插入图片描述

面试题资料

独家渠道收集京东、360、天融信等公司测试题!进大厂指日可待!
在这里插入图片描述

👉嘿客必备开发工具👈

工欲善其事必先利其器。学习客常用的开发软件都在这里了,给大家节省了很多时间。

这份完整版的网络安全(客)全套学习资料已经上传至CSDN官方,朋友们如果需要点击下方链接也可扫描下方微信二v码获取网络工程师全套资料【保证100%免费】

在这里插入图片描述

如果你对网络安全入门感兴趣,那么你点击这里👉CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值