ELSE 技术周刊(2018.04.16期)

团队分享 魔幻语言 JavaScript 系列之类型转换、宽松相等以及原始值 从两个题目来介绍类型转换、宽松相等以及原始值的概念: [1] + [2] – [3] === 9,以及如何让 a == true && a == false 的值为 true,很是体现 JavaScript 的魔幻之处。 前端开发 如何评价阿里开源的企业级 Node.js 框架 EggJS? “egg最核心的东西,其实就是一套约定和规范,这个规范不仅仅是开发目录的约定,还包括了开发过程中,从提案讨论,编码风格,code review等等方面的规范。 其实大家的基础框架用不用egg真的无所谓,最重要是有一套适合团队的约定。” 从命令式 JavaScript class 到声明函数式的华丽转身 通过 8 个步骤,将 EventEmitter 的实现从面相对象的 class...

阅读全文

前端安全之XSS攻击

XSS(cross-site scripting跨域脚本攻击)攻击是最常见的Web攻击,其重点是“跨域”和“客户端执行”。有人将XSS攻击分为三种,分别是: Reflected XSS(基于反射的XSS攻击) Stored XSS(基于存储的XSS攻击) DOM-based or local XSS(基于DOM或本地的XSS攻击) Reflected XSS 基于反射的XSS攻击,主要依靠站点服务端返回脚本,在客户端触发执行从而发起Web攻击。 例子: 做个假设,当亚马逊在搜索书籍,搜不到书的时候显示提交的名称。 在搜索框搜索内容,填入<script>alert('handsome boy')</script>, 点击搜索。 当前端页面没有对返回的数据进行过滤,直接显示在页面上, 这时就会alert那个字符串出来。 进而可以构造获取用户cookies的地址,通过QQ群或者垃圾邮件,来让其他人点击这个地址: http://www....

阅读全文

HTTP与HTTPS握手的那些事

今天我总结了什么是HTTP三次握手,还有HTTPS握手的过程以及为什么HTTPS是安全的。 前提 在讲述这两个握手时候,有一些东西需要提前说明。 HTTP与TCP/IP区别? TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。 下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI(Open System Interconnect)模型中的位置: CA证书是什么? CA(Certificate Authority)是负责管理和签发证书的第三方权威机构,是所有行业和公众都信任的、认可的。 CA证书,就是CA颁发的证书,可用于验证网站是否可信(针对HTTPS)、验证某文件是否可信(是否被篡改)等,也可以用一个证书来证明另一个证书是真实可信,最顶级的证书称为根证书。除了根证书(自己证明自己是可靠),其它证书都要依靠上一级的证书,来证明自己。 HTTP三次握手 HTTP(HyperText Transfer Protocol)超文本传输协议是互联网上应用最为广泛的一种网络协议。由于信息是明文传输,...

阅读全文

ELSE 技术周刊(2018.04.09期)

ELSE 技术周刊(2018.04.09期)

业界动态 Announcing the Second Edition of "Refactoring" Martin Fowler 宣布《重构》第二版的写作语言将从 Java 切换到 JavaScript,由于 ECMAScript 越来越完善,以及函数式编程的特性,使得其很容易重构。 Introducing the Payment Request API for Apple Pay iOS 11.3 Safari支持Apple Pay了。 前端开发 Node全栈为前端带来更多可能 坚定不移地走Node.js全栈之路。 2018 前端性能检查表 性能不仅仅是一个技术问题:它很重要,而且当把它引入到工作流时,设计决策必须根据其性能影响来决定。我们必须不断的测量、监视和改进性能,而且 Web 日益复杂的情况带来了新的挑战,...

阅读全文

浅谈script标签的defer和async

1. 什么鬼 今天在做一个小需的时候,忽然看到前辈一句吊炸天的代码 <script src="#link("xxxx/xx/home/home.js")" type="text/javascript" async defer></script> 卧槽,竟然同时有async和defer属性,心想着肯定是前辈老司机的什么黑科技,两个一块儿肯定会发生什么神奇化学反应,于是赶紧怀着一颗崇敬的心去翻书翻文档,先复习一下各自的定义。 2. 调查一番 先看看async和defer各自的定义吧,翻开红宝书望远镜,是这么介绍的 2.1 defer 这个属性的用途是表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕后再运行。因此,在<script>...

阅读全文