独家供稿:移动Labs

HTML5应用采用的仍然是Javascript(JS)、HTML、CSS 等Web语言,因而其代码保护就是这些Web代码的保护,而HTML5应用主要功能一般采用JS实现,因此JS代码就成了保护重点。
然而,似乎Web语言的设计者们根本没考虑过保护代码,或许因为他们认为互联网的核心价值不是代码,而是业务数据、是流量,这样更有利于互联网Web服务的发展。
    但开发者似乎不这么认为。我和开发者交流BAE/Widget/HTML5等话题时,必不可少的问题就是如何保护代码。代码保护是许多Web开发者的一块心病。
Web语言是解析执行,即代码需要明文下载到客户端(如浏览器),同时可以很容易的进行调试,因而代码保护比较困难。
    当然,也有一些解决方案是将Web代码编译成二进制文件(如下图),但由于这方面没有业界规范,因而需要客户端支持该文件的解析,其通用性成问题。
 
    目前PhoneGap之类的混搭应用模式(native+html5)大行其道,给了这种代码保护方法很好的生存环境。即:可以将负责解析经过加密或编译的Web代码与解析模块一起打包成Native应用。
    当然,最流行、折中的HTML5代码保护办法仍代码混淆,而由于应用的主要功能一般通过JS实现,因而这里主要介绍JS代码的混淆。
    代码混淆简单地说是对代码进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,但难以阅读。一般代码混淆器会将代码中的所有变量、函数、类的名称变为简短的英文字母代号,删去代码注释。
    JS代码混淆器主要是主要分在线和离线两大类。一般开发者比较倾向离线代码混淆器(因为使用在线混淆器需要将代码提交到网站上),这里介绍几个比较不错的,供参考:
 
1.Jasob
网址:http://www.jasob.com/
功能强,能对Javascript、HTML、CSS文件进行混淆,可以选择变量的混淆程度等各种功能。当然也具有非常强的代码压缩能力。
但是,但是,是收费的共享软件,没用几天就过期了。。。
各位如果有免费使用的各种方法,别忘了和我分享。
 
2.Javascript Obfuscator
网址:http://www.javascript-source.com/javascript-obfuscator.html
支持JS混淆和代码压缩,简单好用。各种编码字符替换,混淆的代码更加晦涩。
但是、但是,也是收费的共享软件,而且不支持中文字符集,不知是否因为是试用版本。
3. YUI Compressor
网址:http://yuilibrary.com/projects/yuicompressor/
Yahoo出品的混淆压缩工具,据说jQuery就是用它混淆压缩的。免费、免费!
但是、但是,质量一般,还是用命令行的。 也有兄弟基于它做了可视化版本:
http://cloud.github.com/downloads/tinyms/jscompressor/JsCompressor.exe
    不过无论是代码混淆还是编译,都是防君子不防小人。因为,即使JAVA、C#等编译型语言,都可以反编译出非常易读的代码。
 

HTML5漫谈(7)——如何保护HTML5应用代码的更多相关文章

  1. 关于html5与jsp页面同样的html代码展示的页面效果不一样的问题

    原文:关于html5与jsp页面同样的html代码展示的页面效果不一样的问题 html5默认的声明为 <!DOCTYPE html> jsp默认的声明头部为 <%@ page con ...

  2. HTML5 Maker – 在线轻松制作 HTML5 动画效果

    HTML5 Maker 是一个在线动画制作工具,帮助你使用 HTML,CSS 和 JavaScript 创建动态,互动的内容.它非常容易使用,同时可以帮你实现非常好的效果.它可以制作跨浏览器的动画内容 ...

  3. 5个常用Java代码混淆器 助你保护你的代码

    [IT168 技术文档] 从事Java编程的人都知道,可以通过逆向工程反编译得到Java程序的源代码,这种反编译工具之一就是JAD.因此,为保护我们的劳动成果,尽可能给反编译人员制造障碍,我们可以使用 ...

  4. 10款很酷的HTML5动画和实用的HTML5应用

    1.HTML5的画布花朵生成器可生成多种样式的花朵 HTML5非常流行,利用HTML5制作动画也非常方便,今天要分享一款利用HTML5 Canvas制作的花朵生成器,我们只需要在Canvas画布上点击 ...

  5. [Mugeda HTML5技术教程之1] HTML5: 生存还是毁灭

    [Mugeda HTML5技术教程] 开篇: HTML5 - 生存,还是毁灭 摘要:HTML5并不试图解决所有问题.但是在很多适合的场合,HTML5是不二选择. To be, or not to be ...

  6. 浅谈Android保护技术__代码混淆

    浅谈Android保护技术__代码混淆   代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为.将代码中的各种元 ...

  7. IT兄弟连 HTML5教程 HTML5的曲折发展过程 HTML5的诞生

    十年磨一剑,正如我们所看到的一样,HTML5大潮正来势汹汹.但也正如我们所知道的一样,HTML5是一种技术标准,它的语义之美.人性之美.简单之美.实用之美……如同一场革命,它的主要应用场景是浏览器,不 ...

  8. html5手机端遮罩弹出菜单代码

    效果体验:http://hovertree.com/texiao/html5/17/ 效果图: 代码如下: <!doctype html> <html lang="zh&q ...

  9. 《HTML5经典坦克大战》游戏(代码)

    前几天粗略地学了HTML5,然后就用它写了一个<经典坦克大战>游戏. 现在想分享一下我写的代码,写得不好请大家多多指教. 给大家推荐一个网站,这个网站是为大学生而做,为方便学习编程的同学而 ...

随机推荐

  1. <pre>标签的基本样式设置

    断行 在html中,换行符无法在一般标签内作为布局控制显示,包括xml实体 和 均表现为white-space,仅用于断字[1]. 一般情形下,可使用<br>标签断行:但需要从原始xml文 ...

  2. 024_nginx之backlog坑

    一. 线上碰到一个nginx调优的一个设置,即listen后面设置 listen 80 backlog=1024; 但是多个域名都设置这个值的时候就会出现以下的提示重复报错. 关于backlog参数的 ...

  3. LabVIEW--为控件添加说明信息

    之前只知道为VI添加说明信息(在VI的属性里面添加,快捷键ctrl+I 打开),今天知道了控件也可以添加说明信息,这样就方便了许多,极大的提高了程序的可读性.

  4. IList与List的区别

    List是一个类(Class),IList是一个接口(Interface),不能被实例化,只能用 IList <T> myIList =new List <T>(); List ...

  5. 洛谷P4630 [APIO2018]铁人两项 [广义圆方树]

    传送门 又学会了一个新东西好开心呢~ 思路 显然,假如枚举了起始点\(x\)和终止点\(y\),中转点就必须在它们之间的简单路径上. 不知为何想到了圆方树,可以发现,如果把方点的权值记为双联通分量的大 ...

  6. python 启动虚拟环境

    假设你有两个Python项目-A和B,这两个项目都需要使用同一个第三方模块-tensorflow.如果这两个项目使用相同的tensorflow版本,也许不会有什么问题. 但是,当A和B项目使用不同的t ...

  7. vue----less引用

    1.安装less. npm install less less-loader --save-dev 2.修改webpack.config.js { test: /\.less$/, use:[ 'st ...

  8. fatal: refusing to merge unrelated histories

    Git 提交代码时遇到冲突了,所以 git pull 拉不下来远程代码.使用一下命令解决: git pull origin master --allow-unrelated-histories 然后解 ...

  9. javaScript遍历对象、数组总结

        javaScript遍历对象总结 1.使用Object.keys()遍历 返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性). var obj = {'0':'a ...

  10. 1283: 骨牌铺方格(zzuli)

    Problem Description 在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图: Input ...