# 前端安全策略
# 前端计算与安全防御
- 前端加密与混淆
- 高性能计算法则
- ASMJS 生产环境
- WebAssembly
# 前端加密与混淆
# 混淆【混淆的概念和混淆的技术】
- UglifyJS:目前最流行的
- JSPacker:PHP 开发的
- Closure Compoiler: Java 开发的
- JS Min:C 写的
# UglifyJS2 整个 js 压缩过程
- parser: 用于实现抽象语法树(AST)
- the code generator: 通过 AST 生成 JS 代码和 source map
- compressor: 用于 JS 代码的压缩
- mangler: 用于减少局部变量的命名,用单字母替换
- scope analyzer,用来判断变量定义范围和变量引用范围的工具
- tree walker, AST 树遍历工具
- tree transformer: AST 树转换工具
// 变量混淆
const a = 123;
->
const bxo = 123;
// 逻辑混淆
function render(obj){
console.log(obj.title);
}
render({title: "buy"});
->
var self = this, o={};
o.__defineSetter__("t", function(e){
self[t("elosnoc")][t("gol")](e[t("eltit")])
});
function t(e){
return e.split("").reverse().join("");
}
o[t("eltit")] = t("yub");
o.t=o;
aaencode/ jjencode 字符混淆