如何对JavaScript进行保护

代码压缩:

  • 去除空格
  • 换行等

代码加密:

  • eval

    • eval可以将其中的参数按照JavaScript的的语法进行解析并执行,其实就是将JavaScript的代码变成了eval的参数其中的一些字符会被按照特定的编码
    • 可以使用eval加密的网站进行加密
    http://www.jqueryfuns.com/tools/jsencode
    加密前:console.log("hello")
    加密后:eval(function(p,a,c,k,e,r){e=String;if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'^$'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('console.log("hello")',[],1,''.split('|'),0,{}))
    
    • 因为可以将加密后的代码直接输出到控制台,所以这种加密方法是非常弱的
  • Emscripten

    • Emscripten是一个用于编译的工具链asm.js公司使用LLVM构建的WebAssembly可以让你在没有插件的情况下,在网络上运行C和C++。
    • 核心:C/C++
    • 编译:Emscripten
    • 结果:asm.js
  • 调用:JavaScript

    • 就是一些核心的功能可以使用c或者c++来实现,然后通过Emscripten编译器来生成asm.js文件,然后就可以在浏览器里调用,就可以实现它的执行了,所以可以起到保护核心逻辑的功能了。
  • WebAssembly等

    • 核心:C/C++
    • 结果:wasm文件(字节码文件)运行速度会更快,体积会更小
    • 调用:JavaScript

代码混淆:

  • 变量混淆(将变量名变成一些无意义的可以来较乱的字符串(16进制)降低代码的可读性)
  • 字符串混淆(进行加密或者是编码,目的:确保代码里面,不可以使用搜索的方式来查到原始的字符串)
  • 属性加密(JavaScript里面有一些Object,可能是一些键值对,所以可以把对象进行加密的转换,就是把key-value的映射关系混淆掉)
  • 控制流扁平化(打乱原有的代码的执行流程)
  • 僵尸代码注入(将一些无用的代码注入到我们的代码中,实现扰乱)
  • 代码压缩(去除空格回车调试语句等等)
  • 反调试 (无限debug、定时debug、debugger关键字)
  • 多态变异(JavaScript一旦被调用,代码就变成和原来完全不同的代码,但是保证功能完全不变,避免代码被动态的分析调试)
  • 锁定域名
  • 反格式化
  • 特殊编码

javascript代码混淆的原理相关推荐

  1. 前端JavaScript代码混淆加密原理介绍

    因为JavaScript大都是运行在浏览器端,这就导致任何人都可以直接对网站的代码进行查看,如果代码没有进行任何处理就会导致直接暴露源码,他人便可轻而易举的复制你的劳动成果,但是由于没有纯粹的加密方案 ...

  2. 几维安全Javascript代码混淆(js加密)在线使用说明

    2019独角兽企业重金招聘Python工程师标准>>> 几维安全Javascript代码混淆是一项在线加密服务,用户只需将JS文件打包成zip包,提交到加密平台,即可完成代码混淆.字 ...

  3. 代码混淆的原理是什么?常见代码混淆方法介绍

    移动应用代码安全非常重要,代码逆向会导致代码逻辑被获取,进一步导致控制流被hook,安全防线被破,给APP安全带来巨大风险,因此开发者一般都会进行代码混淆保护.本文主要介绍了代码混淆的原理.方法.以及 ...

  4. javascript代码混淆与加解密

    开发一个python的程序,功能很简单,对某个网页发送post请求,把response的结果解析后存入数据库,供后续分析. 抓包 首先是抓包,使用burp suite,发现该网页原始的post请求如下 ...

  5. JavaScript代码混淆加密

    www.safekodo.com 众所周知,JavaScript大都是运行在浏览器端,这就导致任何人都可以直接对网站的代码进行查看,如果代码没有进行任何处理就会导致直接暴露源码,他人便可轻而易举的复制 ...

  6. JavaScript 代码混淆实战(七)|逗号表达式的混淆

    著名的5s盾,对js代码进行了大量的混淆,其第一层js代码中,逗号表达式非常的多.研究后,我自己也搞了几个简单的实例来生成逗号表达式,感觉其实所谓的混淆也挺简单的. 一.插件名称 逗号表达式混淆. 二 ...

  7. Android代码混淆及反编译apk

    序言: 经常听开发提起代码混淆引起的BUG,混淆后在测试一下有没有问题,那问题来了什么是代码混淆,怎么确认代码混淆成功了,带着问题读下文吧~~ 一.代码混淆的原理 代码混淆是将程序中的代码,等价转换为 ...

  8. 如何对Javascript代码进行二次压缩(混淆)

    如何对Javascript代码进行二次压缩(混淆) 对Javascript代码进行压缩(混淆),可以有效减少传输和加载时间.但是,不是所有的变量(方法)都能被混淆的,一般来说,只有非属性的变量(方法) ...

  9. android js 代码混淆工具,好用的JS(Javascript)混淆加密工具-HDS JSObfuscator 2.14版

    好用的JS(Javascript)混淆加密工具-HDS JSObfuscator 2.14版 书法字体2017.06.23css压缩 分享一款好用的JS混淆加密工具:HDS JSObfuscator ...

  10. Java 压缩/混淆 JavaScript 代码

    基本上都是自己写的工具构建前端工程,压缩/混淆 JavaScript 代码的工具必不可少.我们是 Java 平台的,就是说用 Java 去压缩 JS,这样比较方便.虽然咱们可以外部调用 node 等专 ...

最新文章

  1. 制造业采购审批流程设计示例
  2. Docker Compose基本介绍
  3. 【网络安全】一个堆题inndy_notepad的练习笔记
  4. iOS之深入解析alloc、init与new的底层原理
  5. urllib 模块学习
  6. 判断手机浏览器还是桌面浏览器
  7. 【LeetCode笔记】剑指 Offer 36. 二叉搜索树与双向链表(Java、二叉树、链表、原地算法)
  8. 第一章: 新的结构化元素
  9. java中如何声明班干部,java类成员变量的定义和声明
  10. 【Flink】Pending record count must be zero at this point : 1
  11. 这次要说不明白 immutable 类,我就怎么地!
  12. JSP脚本元素(声明 %! 表达式 %= 脚本 %)
  13. 剑指offer【书】之简历抒写
  14. 解析bt种子下载 java_使用Java解析Torrent文件(BT种子),基于使用Eclipse ECF中的org.eclipse.bittorrent方案...
  15. AB测试平台的工程实现
  16. 北洋降舰之鱼雷艇队 ZT
  17. solr 查询出异常org.apache.solr.search.SyntaxError: Cannot parse
  18. 1.7 URL与端点
  19. 40套各种风格游戏行业网站html5模板wap手机游戏资讯网站模板游戏动漫设计公司html模板游戏公司网站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响应
  20. 十大数据爱好者必备书籍

热门文章

  1. Python图片添加好看的中文字体并根据图片动态改变文字大小
  2. 扫雷游戏网页版_借“买量”造爆款,《梦幻西游网页版》击穿H5游戏天花板
  3. 谭浩强C语言程序设计第五版第七章例题
  4. Mac版WebStorm破解方案
  5. 关于 Mythware 极域电子教室
  6. apicloud 微信授权在AppLoader中 包名不一致
  7. 斐讯 K3刷梅林改固件ac-3100 成功配置定时任务
  8. 深入理解JVM虚拟机读书笔记【第七章】虚拟机类加载机制
  9. 深入理解JVM虚拟机之高效并发
  10. 通信专业实务(中级)