科普文javascript前世今生and安全隐患(代码片段)

姬无力 姬无力     2022-12-04     643

关键词:

目录

ECMAScript

 javascript前世今生

 版本

 ES6 特性

 引擎

 V8

 SpiderMonkey

 JavaScriptCore

 ChakraCore

 JScript

 JerryScript

 WebAssembly

 简介

 执行

 安全


ECMAScript

 JavaScript的前世今生

ECMAScript是一种由ECMA国际通过ECMA-262标准化的脚本程序设计语言,它往往被称为JavaScript或JScript。简单的,可以认为ECMAScript是JavaScript的一个标准,但实际上后两者是ECMA-262标准的实现和扩展。

 版本

1997年6月,首版发布。1998年6月,进行了格式修正,以使得其形式与ISO/IEC16262国际标准一致。1999年12月,引入强大的正则表达式,更好的词法作用域链处理,新的控制指令,异常处理,错误定义更加明确,数据输出的格式化及其它改变。而后由于关于语言的复杂性出现分歧,第4版本被放弃,其中的部分成为了第5版本及Harmony的基础。

2009年12月,第五版发布,新增“严格模式(strict mode)”,澄清了许多第3版本的模糊规范,并适应了与规范不一致的真实世界实现的行为。增加了部分新功能,如getters及setters,支持JSON以及在对象属性上更完整的反射。

2015年6月,第6版发布,最早被称作是 ECMAScript 6(ES6),添加了类和模块的语法,迭代器,Python风格的生成器和生成器表达式,箭头函数,二进制数据,静态类型数组,集合(maps,sets 和 weak maps),promise,reflection 和 proxies。

2016年6月,ECMAScript 2016(ES2016)发布,引入 Array.prototype.includes 、指数运算符、SIMD等新特性。

2017年6月,ECMAScript 2017(ES2017)发布,多个新的概念和语言特性。

2018年6月,ECMAScript 2018 (ES2018)发布包含了异步循环,生成器,新的正则表达式特性和 rest/spread 语法。

 ES6 特性

  • const / let
  • 模板字面量
  • 解构

    • [a, b] = [10, 20]
  • 对象字面量简写法
  • for...of 循环
  • ...xxx 展开运算符
  • 可变参数
  • 箭头函数
  • 默认参数函数
  • 默认值与解构

 引擎

 V8

V8是Chrome的JavaScript语言处理程序(VM)。其引擎由TurboFan、Ignition和Liftoff组成。其中Turbofan是其优化编译器,Ignition则是其解释器,Liftoff是WebAssembly的代码生成器。

 SpiderMonkey

SpiderMonkey是Mozilla项目的一部分,是一个用 C/C++ 实现的JavaScript脚本引擎。

 JavaScriptCore

JavaScriptCore的优化执行分为四个部分,LLInt、Baseline、DFG、FTL。LLInt是最开始的解释执行部分,Baseline是暂时的JIT,DFG阶段开始做一定的优化,FTL阶段做了充分的优化。

 ChakraCore

ChakraCore是一个完整的JavaScript虚拟机,由微软实现,用于Edge浏览器以及IE的后期版本中。

 JScript

JScript是由微软开发的脚本语言,是微软对ECMAScript规范的实现,用于IE的早期版本中。

 JerryScript

JerryScript是一个适用于嵌入式设备的小型JavaScript引擎,由三星开发并维护。

 

 WebAssembly

 简介

简而言之,WASM是一种分发要在浏览器中执行的代码的新方法。它是一种二进制语言,但是无法直接在处理器上运行。在运行时,代码被编译为中间字节代码,可以在浏览器内快速转换为机器代码,然后比传统JavaScript更有效地执行。

 执行

虽然浏览器可能以不同的方式来实现Wasm支持,但是使用的沙盒环境通常是JavaScript沙箱。

在浏览器中运行时,Wasm应用程序需要将其代码定义为单独的文件或JavaScript块内的字节数组。 然后使用JavaScript实例化文件或代码块,目前不能在没有JavaScript包装器的情况下直接在页面中调用Wasm。

虽然Wasm可以用C / C++等语言编写,但它本身不能与沙箱之外的环境进行交互。这意味着当Wasm应用程序想要进行输出文本等操作时,它需要调用浏览器提供的功能,然后使用浏览器在某处输出文本。

Wasm中的内存是线性的,它在Wasm应用程序和JavaScript之间共享。 当Wasm函数将字符串返回给JavaScript时,它实际上返回一个指向Wasm应用程序内存空间内位置的指针。 Wasm应用程序本身只能访问分配给它的JavaScript内存部分,而不是整个内存空间。

 安全

Wasm的设计从如下几个方面考虑来保证Wasm的安全性

  • 保护用户免受由于无意的错误而导致漏洞的应用程序的侵害
  • 保护用户免受故意编写为恶意的应用程序的侵害
  • 为开发人员提供良好的缓解措施

具体的安全措施有

  • Wasm应用程序在沙箱内运行
  • Wasm无法对任意地址进行函数调用。Wasm采用对函数进行编号的方式,编号存储在函数表中
  • 间接函数调用受类型签名检查的约束
  • 调用堆栈受到保护,这意味着无法覆盖返回指针
  • 实现了控制流完整性,这意味着调用意外的函数将失败

 

 推荐阅读

渗透测试实战专栏

优质资源

  1.  Java实现照片GPS定位【完整脚本】
  2. ReadPicExif.zip_-Java文档类资源-CSDN下载https://download.csdn.net/download/weixin_42350212/20024262
  3. Python实现照片GPS定位【完整脚本】
  4. python定位照片精确位置完整代码脚本_Python手机号定位-Python文档类资源-CSDN下载https://download.csdn.net/download/weixin_42350212/19776215
  5. 女神忘记相册密码 python20行代码打开【完整脚本】
  6. 女神忘记相册密码python20行代码打开.py_-Python文档类资源-CSDN下载https://download.csdn.net/download/weixin_42350212/19871942
  7. python修改证件照底色、大小、背景、抠图【完整源码】https://download.csdn.net/download/weixin_42350212/19815306
  8. python修改证件照底色、大小、背景、抠图【完整源码】_-Python文档类资源-CSDN下载https://download.csdn.net/download/weixin_42350212/19815306 

 

python实战

 【资源推荐】

渗透测试专用系统

kali-linux-e17-2019.1a-amd64.iso系统镜像

kali-linux-e17-2019.1a-amd64.iso系统镜像_kalilinux镜像文件iso,kalilinux系统镜像-Linux文档类资源-CSDN下载

kali-linux-2018.4-amd64 操作系统

kali-linux-2018.4-amd64操作系统-Linux文档类资源-CSDN下载

manjaro-xfce-17.1.7-stable-x86_64.iso系统镜像

manjaro-xfce-17.1.7-stable-x86_64.iso系统镜像_manjaro镜像下载-Linux文档类资源-CSDN下载

WiFi专用渗透系统 nst-32-11992.x86_64.iso操作系统镜像

nst-32-11992.x86_64.iso操作系统镜像.zip-Linux文档类资源-CSDN下载

Parrot-security-4.1_amd64.iso 操作系统镜像

Parrot-security-4.1_amd64.iso操作系统镜像-Linux文档类资源-CSDN下载

manjaro-xfce-17.1.7-stable-x86_64 操作系统

manjaro-xfce-17.1.7-stable-x86_64操作系统-Linux文档类资源-CSDN下载

cyborg-hawk-linux-v-1.1 操作系统

cyborg-hawk-linux-v-1.1操作系统-Linux文档类资源-CSDN下载


【kali常用工具】上网行为监控工具       

 

上网行为工具-网络安全文档类资源-CSDN下载

【kali常用工具】抓包工具Charles Windows64位 免费版

抓包工具CharlesWindows64位免费版-网络监控文档类资源-CSDN下载

【kali常用工具】图印工具stamp.zip

图印工具stamp.zip-制造文档类资源-CSDN下载

 【kali常用工具】brutecrack工具[WIFIPR中文版]及wpa/wpa2字典

brutecrack工具[WIFIPR中文版]及wpa/wpa2字典_wifi密码字典,wifi字典-其它文档类资源-CSDN下载

 

javascript今生前世

...据类型,string、number、undefined、boolean、object、null。当然javascript还准备了引用类型,他们都是object对象构造而来,如下图所示的Function、Array、Date...        &nb 查看详情

javascript的前世今生

JavaScript特点:松散性:它的变量不必具有一个明确的类型对象属性:JavaScript中的对象把属性名映射为任意的属性值,它的这种方式很像哈希表或关联数组,而不像C中的结构体或者C++、Java中的对象。继承机制:JavaScript中的面向... 查看详情

selenium之前世今生

前世SeleniumRC早期的Selenium使用的是JavaScript注入技术与浏览器打交道,需要SeleniumRC启动一个Server,将操作Web元素的API调用转化为一段段Javascript,在Selenium内核启动浏览器之后注入这段Javascript。开发过Web应用的人都知道,Javascript... 查看详情

selenium之前世今生

前世SeleniumRC早期的Selenium使用的是JavaScript注入技术与浏览器打交道,需要SeleniumRC启动一个Server,将操作Web元素的API调用转化为一段段Javascript,在Selenium内核启动浏览器之后注入这段Javascript。开发过Web应用的人都知道,Javascript... 查看详情

从javascript看字符编码的前世今生!

导语 | 每个程序员都应该了解一下字符编码,有了基础概念之后我们对编程语言、字符处理能有更深入的理解。本文我花了大量时间进行资料查阅和考证,希望能够给大家带来一些帮助,多多交流!一、起因最... 查看详情

http协议与https协议的前世今生

一、Http与Https的区别:HTTP的URL以http:// 开头,而HTTPS的URL以https:// 开头HTTP是不安全的,而HTTPS是安全的HTTP标准端口是80,而HTTPS的标准端口是443在OSI网络模型中,HTTP工作于应用层,而HTTPS的安全传输机制工作在传输层HTTP无... 查看详情

人工智能的前世今生

...大约3分钟!现代是快文时代,三分钟足矣 人工智能前世: 了解人工智能向何处去,首先要知道人工智能从何处来。  大约200年前,英国数学家巴贝奇设计了第一台能计算二次多项式的计算机器,叫做差分机,摇... 查看详情

androidthings专题1.前世今生

文|谷歌开发者技术专家,物联网方向(IOTGDE)王玉成(YorkWang)2016年12月,Google发布了DeveloperPreview版的AndroidThings,该平台为利用Android这一世界上最受支持的操作系统的强大功能构建物联网产品铺平了广阔的道路。但它并... 查看详情

androidthings专题1.前世今生

文|谷歌开发者技术专家,物联网方向(IOTGDE)王玉成(YorkWang)2016年12月,Google发布了DeveloperPreview版的AndroidThings,该平台为利用Android这一世界上最受支持的操作系统的强大功能构建物联网产品铺平了广阔的道路。但它并... 查看详情

mysqlhashjoin前世今生(代码片段)

因工作需要,对MySQLHashJoin的内部实现做了一些探索和实践,对这个由8.0.18开始引入的连接算法有了一定的了解,写文总结与各位大佬分享,欢迎大家指教。因篇幅较长,这份总结分成若干部分,我们今天... 查看详情

网络防火墙之iptables的前世今生和归宿

任何事物都有一个从无到有,再归于无的过程。是的,我这里用了一个绝对词:任何。防火墙在计算机领域中,防火墙(英文:Firewall)是一项协助确保信息安全的设备,会依照特定的规则,允许或是限制传输的数据通过。防火... 查看详情

html的前世今生

...                      HTML的前世今生                                                      作者:尹正杰版权声明:原创作品,谢... 查看详情

css的前世今生

...                       Css的前世今生                                                作者:尹正杰版权声明:原创作品,谢绝转载!否则... 查看详情

git前世今生

GIT前世今生GIT到底是什么Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。命名的由来(仅供参考)Thename"git"wasgivenbyLinusTorvaldswhenhewrotetheveryfirstversion.Hedescribedthetoolas"thestupidcontenttracker"andthe... 查看详情

.netcore001.netcore前世今生

文章目录.NetCore前世今生C#的概述Asp.NetCoreMVC(应用框架).NetCore前世今生.Net5就是.NetCore5不能向后兼容C#的概述Asp.NetCoreMVC(应用框架)相当于SpringMVC,是.Net的应用框架 查看详情

spring前世今生与spring编程思想

查看详情

bert的前世今生

TransformerTransformer来自论文:?AllAttentionIsYouNeed别人的总结资源:谷歌官方AI博客:?Transformer:ANovelNeuralNetworkArchitectureforLanguageUnderstandingAttention机制详解(二)——Self-Attention与Transformer谷歌软件工程师放弃幻想,全面拥抱Transf 查看详情

twaver可视化编辑器的前世今生电力云计算数据中心

插播一则广告(长期有效)TWaver需要在武汉招JavaScript工程师若干要求:对前端技术(JavasScript、HTML、CSS),对可视化技术(Canvas、WebGL)有浓厚的兴趣基础不好的可培养,基础好的可共谋大事感兴趣的给我发邮件:[email protected]----... 查看详情