今晚打小强
今晚打小强
看了一下运行结果后,有点懵逼,然后去翻了一下v8里array.js的实现代码。 ``` function ArrayPush() { // 这个代码应该是c++实现的,作用应该是检查当前对象能不能转化成数组对象 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.push"); if (%IsObserved(this)) return ObservedArrayPush.apply(this, arguments); var array = TO_OBJECT_INLINE(this); var n = TO_UINT32(array.length); // 获取array对象的length属性 var m = %_ArgumentsLength(); // 获取参数的长度 ...
``` function LazyMan(name) { var o = new Object(); o.name = name; console.log(`Hi I am ${o.name}`); o.message = []; setTimeout(() => { o.next(); }, 0); o.eat = function (food) {...
前提条件:攻击DNS服务器、攻击CA机构的证书服务器、伪造一套SSL的密钥对和证书 流程如下: 1. 攻击DNS服务器,修改网页的域名和ip的对应关系。ip地址改成攻击者想要引导的地址; 2. 当用户访问网页的时候,在浏览器输入网页地址,会因为域名劫持访问到攻击者的地址。获取到用户的访问信息后,伪装成用户,向服务器发送相同数据的https请求。这个过程中服务器会返回公钥和证书给攻击者; 3. 将自己生成的公钥和伪造的证书发给用户,用户去CA验证证书,然后生成随机加密串,使用伪造的公钥加密后又发给了攻击者; 4. 攻击者用伪造的私钥解密数据,获得随机加密串,再使用网页的公钥加密发送给服务器; 这样下来,用户其实是和攻击者建立了SSL连接,而攻击者才是真正和网站建立连接的那方,所以用户和网站的数据都会经过攻击者。这个过程是中间人攻击,不过攻击CA证书服务器就过分了,尽管有人成功的攻击过CA机构。要是可以自己作死,可以把这步更换成上传信任的证书。把攻击者的伪造的证书上传一下,就能体验被攻击者骑在头上拉屎的乐趣了。
深度遍历 ``` function convert(entry) { const queue = []; const output = {}; function dft(obj) { const keys = Object.keys(obj); for (let i of keys) { queue.push(i); if (typeof obj[i]...