即,对于一个而言,预编译的代码更难阅读,因此很难有效地更改浏览器代码。
它比JS更“沙盒”化了,这使其更不容易被黑客入侵了吗?
“ WebAssembly被指定为在安全的沙盒执行环境中运行。” - https://developer.mozilla.org/en-US/docs/WebAssembly/Concepts
WASM VM内存格式的属性是否使其更具客户端抵抗性?
还要别的吗?
WebAssembly从未被设计为比JavaScript具有更少的可破解性。WebAssembly模块在浏览器中运行,并且可以像其他任何JavaScript应用程序一样进行检查和调试。他们提供的唯一额外保护是混淆。它是一种较低级的语言,这使得解密代码变得更加困难-尽管这不是一个有力的保护措施!
WebAssembly模块被沙箱化是因为一个模块无法访问内存,也无法与另一个正在运行的模块进行交互。他们有自己的隔离执行环境。还对JavaScript进行了沙箱处理,以防止一个选项卡或页面中的代码与另一个选项卡或页面进行交互-更重要的是,它防止访问底层主机OS!
Webassembly使用线性内存,它是连续的内存块,通常用于创建堆。可以将其导出到主机环境,这意味着托管JavaScript代码可以作为字节数组直接对其进行读写。
总而言之,WebAssembly的可入侵性同样不错,并且具有不同的沙箱。如果您是正在使用这项技术的火车,也许是时候重新考虑了吗?
小智 6
在Web上,WebAssembly与JavaScript在同一沙箱中运行,因此WebAssembly不会以任何方式影响其主机,而纯JavaScript也无法做到这一点。但是WebAssembly更进一步,并且由于导入的工作方式,确实使运行不受信任的代码更加安全。
实例化WebAssembly模块时,将为其提供一组导入函数。这些导入是模块有权访问的唯一主机功能,并且在实例化模块后就无法更改它们。如果没有导入,则WebAssembly模块只能表示纯计算,并且只能影响其自身内存的状态。这意味着,如果您不提供任何可以进行网络请求的导入,则可以确定WebAssembly模块不能进行网络请求。与此相比,JavaScript通常无法确定程序是否使用特定的API。
这并不意味着WebAssembly模块中的代码不能包含错误或安全漏洞。例如,当将错误的C程序编译到WebAssembly时,仍然有可能对有漏洞的C程序进行缓冲区溢出攻击,但是区别在于它们可以做的最坏情况取决于导入,易于检查。因此,如果将您导入eval错误的C WebAssembly模块中,则可能会遇到严重的问题,但是如果仅导入console.log,则攻击者最严重的后果就是控制台可能会收到垃圾邮件。
我不认为WebAssembly的安全性低。WebAssembly模块不比最小化或模糊化的JavaScript难读,当您考虑使用asm.js样式的JavaScript时,差异几乎消失了。当然,阅读WebAssembly模块要比打印精美的JavaScript程序难,但这在安全性方面并没有帮助您。
| 归档时间: |
|
| 查看次数: |
384 次 |
| 最近记录: |