国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[譯]什么是 WebAssembly table imports?

Java_oldboy / 1570人閱讀

摘要:中的什么是在第一篇文章中,我介紹了可以導(dǎo)入的四中不同的類型。可能是以某種方式插入到內(nèi)存中的惡意代碼,可能嵌入到字符串中。是存在于內(nèi)存之外的數(shù)組。如果模塊想要調(diào)用這些函數(shù),它將該索引傳遞給一個(gè)名為的操作。

原文鏈接: https://fanmingfei.com/posts/...

這是系列文章第三篇:

使用 JavaScript 創(chuàng)建一個(gè) WebAssembly 模塊的實(shí)例。

WebAssembly 中的 Memory

什么是 WebAssembly table?

在第一篇文章中,我介紹了 WebAssembly 可以導(dǎo)入的四中不同的類型。

values

function

memory

tables

最后一個(gè)可能有點(diǎn)陌生。什么是 table import,它有什么用呢?

有時(shí)在程序中,你想要有一個(gè)變量指向一個(gè)函數(shù),就像一個(gè)回調(diào)。然后你可以把它傳遞給其他的方法。

在 C 語言中,這叫做函數(shù)指針。函數(shù)存在內(nèi)存中。變量,函數(shù)指針,只是指向該內(nèi)存地址。

如果需要,以后可以將變量指向一個(gè)不同的函數(shù)。這應(yīng)該是一個(gè)熟悉的概念。

在 web 頁面中,所有的方法都是 JavaScript 對(duì)象而且由于它們是 JavaScript 對(duì)象,所以它們存在于 WebAssembly 內(nèi)存之外的內(nèi)存地址中。

如果我們想要一個(gè)指向其中一個(gè)函數(shù)的變量,我們需要把它的地址放在我們的內(nèi)存中。

保證網(wǎng)頁安全的一部分是保證內(nèi)存地址的不可見。你不希望頁面上的代碼可以看到或操作這些內(nèi)存地址。如果頁面上有惡意代碼,它可以使用修改內(nèi)存來創(chuàng)建漏洞。

例如,它可能會(huì)更改你的內(nèi)存地址,以指向不同的內(nèi)存位置。

那么當(dāng)你嘗試調(diào)用這個(gè)函數(shù)的時(shí)候,你會(huì)加載攻擊者給你的內(nèi)存地址。

可能是以某種方式插入到內(nèi)存中的惡意代碼,可能嵌入到字符串中。

Tables 可能實(shí)現(xiàn)類似函數(shù)指針的東西,這樣不容易受到這些攻擊的影響。

Table 是存在于 WebAssembly 內(nèi)存之外的數(shù)組。它的值是對(duì)函數(shù)的引用。

這些引用包含內(nèi)存地址,但由于它不在 WebAssembly 的內(nèi)存中,WebAssembly 不能看到這些地址。

但它確實(shí)可以訪問數(shù)組索引。

如果 WebAssembly 模塊想要調(diào)用這些函數(shù),它將該索引傳遞給一個(gè)名為call_indirect的操作。這樣就可以調(diào)用函數(shù)了。

現(xiàn)在,Table 的用例非常有限。它被添加到用于支持函數(shù)指針的規(guī)范中,因?yàn)镃/C++非常依賴函數(shù)指針。

所以,當(dāng)前唯一可以使用table來引用的只有函數(shù)但是隨著WebAssembly擴(kuò)展的功能,例如,當(dāng)添加對(duì)DOM的直接訪問時(shí),你可能將會(huì)看到Table上存儲(chǔ)著其他的類型的引用,和除了call_indirect之外的操作。

About

Lin Clark

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/84540.html

相關(guān)文章

  • []使用JavaScript創(chuàng)建一個(gè)WebAssembly模塊的實(shí)例

    摘要:原文鏈接這是系列文章第一篇使用創(chuàng)建一個(gè)模塊的實(shí)例。將會(huì)創(chuàng)建模塊的實(shí)例。一旦模塊實(shí)例化完成,主進(jìn)程就會(huì)拿到返回的實(shí)例。如果創(chuàng)建一個(gè)實(shí)例,你還需要其它的參數(shù)。使用這些低級(jí)裝備這些來構(gòu)建實(shí)例。模塊本身沒有任何狀態(tài)。 原文鏈接:https://fanmingfei.com/posts/... 這是系列文章第一篇: 使用 JavaScript 創(chuàng)建一個(gè) WebAssembly 模塊的實(shí)例。 W...

    elarity 評(píng)論0 收藏0
  • []WebAssembly 中的 Memory

    摘要:使用,您可以直接訪問原始字節(jié)碼這可能令人擔(dān)憂。可以根據(jù)索引從中拿到字符串現(xiàn)在,很多人并不知道如何在中使用字節(jié)碼。你需要將字節(jié)碼轉(zhuǎn)換為有用的內(nèi)容,比如說字符串。通過防止瀏覽器級(jí)內(nèi)存泄漏并提供內(nèi)存隔離,使事情變得更安全。 原文鏈接:https://fanmingfei.com/posts/... 這是系列文章第二篇: 使用 JavaScript 創(chuàng)建一個(gè) WebAssembly 模塊的實(shí)...

    junnplus 評(píng)論0 收藏0
  • WebAssembly 初嘗

    摘要:在當(dāng)前階段,僅僅只是字節(jié)碼規(guī)范。如果都沒有將代碼編譯為字節(jié)碼的工具,要起步就很困難了。接下來要做的是使用將格式的代碼轉(zhuǎn)換為二進(jìn)制碼。運(yùn)行文件,最后就能得到瀏覽器需要的真正的二進(jìn)制碼。 本文轉(zhuǎn)載自:眾成翻譯譯者:文藺鏈接:http://www.zcfy.cc/article/1031原文:http://cultureofdevelopment.com/blog/build-your-fi...

    anonymoussf 評(píng)論0 收藏0
  • Webpack 4.0 發(fā)布:有哪些新特性?(

    摘要:有哪些新特性有哪些改進(jìn)學(xué)著使用這個(gè)新版本,來構(gòu)建更快的應(yīng)用吧。繼版本之后,花了將近八個(gè)月的時(shí)間來發(fā)布。的創(chuàng)始人之一,,建議用戶使用,以便使用最優(yōu)的性能,是因?yàn)樵创a使用了新特性。全新的插件系統(tǒng)配備了全新整改的插件系統(tǒng)。 本文原文地址:https://auth0.com/blog/webpac...第一次翻譯,不當(dāng)之處,歡迎指正 官方已經(jīng)發(fā)布了Webpack 4.0。有哪些新特性?有哪些...

    HitenDev 評(píng)論0 收藏0
  • 2017-08-01 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選掌握開發(fā)工具新一代前端開發(fā)技術(shù)和到底是咋回事第期深入淺出高階組件基于的移動(dòng)頁面緩存解決方案譯保護(hù)我們的,立刻停止狐步舞中文譯中和之間的區(qū)別個(gè)人文章譯什么是個(gè)人文章譯個(gè)人文章熱身實(shí)戰(zhàn)過渡與動(dòng)畫實(shí)現(xiàn)炫酷下拉, 2017-08-01 前端日?qǐng)?bào) 精選 掌握Chrome開發(fā)工具:新一代前端開發(fā)技術(shù)exports、module.exports和export、export default...

    gclove 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<