安全
浏览器的同源策略
Security and Identity
httphijack
使用 Javascript 实现前端防御 http劫持 及防御 XSS攻击,并且对可疑攻击进行上报。防御 XSS 及 http劫持,更多的还是得依靠升级 https 和 CSP(Content-Security Policy)/CSP2(内容安全策略) 等非 JavaScript 技术,高明的攻击者可以绕过任何 JavaScript 防护。
https?
CSP
XSS
分存储型和反射型
X-XSS-Protection
CSRF
case '/api/jsonp':
let csrf_close = true;
if (csrf_close || csrf.verify(ctx.query.token)) {
ctx.type = 'js';
ctx.body = `${ctx.query.callback}(${Math.random()})`;
} else {
ctx.status = 403;
ctx.body = 'token error'
}
break;
可以校验拦截攻击
clickjacking 和 X-Frame-Options
点击劫持 栗子:骗点击量、投票等等
可用opacity:0; pointer-events:none;
不可用:display:none无点击元素, visible:hidden
参考例子
- showcase15
- Frontend Exploits
- website attack examples
Node.js
Node.js 的历史与现状
• Chromium、Chrome、V8
• 版本信息
• wiki
• Ryan Dahl in 2009 (Linux and Mac OS X) -> Joyent
• January 2010 npm(package manager)
• June 2011, Microsoft and Joyent implemented a native Windows version of Node.js. The first Node.js build supporting Windows was released in July 2011.
terminal可用npm version看node版本
源码 & API
• https://github.com/nodejs/node
• https://nodejs.org/en/
NPM(Node Package Manager)
• https://www.npmjs.com/
• npm publish
• left-pad 事件
• 安全问题
应用场景
• 构建工具
– ant(Java) -> grunt -> gulp -> webpack -> parcel ?
• http server
– connect express koa eggjs hapi fastify
• npm rank
• awesome-micro-npm-packages
http & express & koa
koa
koa和express的异步处理不同
koa的异常处理更方便
选择什么框架
express | koa | |
---|---|---|
Github Stars | 37k+ | 20k+ |
Contributions | 220 | 148 |
Middlewares | 3k+ | 1k+ |
优点 | 最流 、最出名、 态成熟 | 依赖模块少,优雅的异常处理 |
缺点 | 异常处理 | 生态相比不够成熟 |
cache & db
• redis & lru-cache:临时性的缓存可用redis
• mongodb & mongoose