关于HTML加密混淆、源码保护、代码安全,防止解压直接看源码

一直有人问HTML加密混淆怎么做,其实这在业内是早已很多人研究过的课题。
最近闲暇之余整理一篇文章分享给大家。

我们先理下需求,加密的目的是什么?加密到什么级别?为此我们可以牺牲什么?
我们知道这个世界不存在绝对的安全,加密会被破解、混淆会被反混淆。
技术小白、开发者、黑客,是完全不同的级别,防范不同级别的人策略都不一样。
防范力度越大,投入代价也越大,比如聘请专业的安全公司。
除了投入,我们还需要考虑程序的执行性能和用户体验。
加密的代码在运行时必须解密,混淆后尤其是混淆HTML后,程序的执行性能会下降。
是否真的有必要做这类的源码保护,还需要谨慎取舍。

一般而言,前端的代码,负责的是用户体验,后端的代码,负责更安全的数据处理。
前端不要涉及泄漏太多涉密信息,那么加密的意义不是特别大。
我很少在前端代码里看到值得保护的内容,比如高深的算法,很多代码是没必要牺牲用户体验来保护的。
但有些前端代码涉及最终用户的数据安全,此时还是要努力做数据保护的。

接下来具体分析几种手段。

    1. 不要在前端放敏感数据
      这个听起来是废话,但真的很重要。
      有些开发者在手机端明文存用户的密码,这是非常危险的事情。
      即使是原生开发,一旦手机被root,也会造成数据泄漏。更何况HTML5开发。
      比较好的做法是手机端存token,而不是密码,这里有篇文章专门介绍这块,涉及做登录的开发者推荐仔细看看设计基于HTML5的APP登录功能及安全调用接口的方式(原理篇)
    1. js、css压缩
      压缩不是加密,也不是混淆。但压缩后的js文件,往往也具有混淆的功能。
      js、css压缩是很常见的技术,我们经常看到各种框架的文件名是xxx.min.js,xxx.min.css。
      使用合适的js、css压缩方案,可以减少文件体积、提高载入速度,最重要的是,它还能加快程序的执行性能。简直是有百利而无一害。
      混淆js比较常用的工具是yahoo的YUI混淆,在HBuilder里点菜单工具-插件安装,里面有YUI compress,可以压缩js和css。
      如果js、css比较大,发布前压缩下是比较推荐的做法。
    1. HTML、js、css混淆
      压缩虽然也能混淆,但不是以让别人看不懂为目的,混淆是真正以别人看不懂为目的。
      但是这样的混淆就不像压缩那么有百利而无一害了,它会降低程序执行性能。
      一些开发者不希望发行包解压后可以直接看到源码,那么此时可以使用混淆方案。
      网上搜索HTML混淆,资料和工具都非常多。
      原理都是类似的,js代码变成乱七八糟的字符串,然后用eval执行,HTML代码变乱七八糟字符串,用document.write或innerHTML执行,css也可以动态的在document.write里写<style>。
      这些工具有免费也有商业的,一般越商业的越难被反混淆。
      这个是免费的在线混淆工具 http://www.myobfuscate.com
      这个是比较知名的商业工具,http://www.jasob.com
      其实大家也可以根据原理自己写混淆算法。
      混淆也是一个有年头的成熟技术,比如Google在保护gmail的前端代码时,也是通过混淆来保护的。
      不管是压缩还是混淆,使用grunt来做发布是不错的方式,开发后一键调用grunt处理,非常便捷。
    1. 防止webkit remote debug,即防止浏览器控制台调试
      Android4.4及以上和iOS是支持webkit remote debug的,在HBuilder的教程里也有如何使用chrome调试Android应用,和使用safari调试iOS应用的教程。
      在HBuilder开发的App里,manifest.json里下的plus-distribute下有一个debug标签,标记为false后打包,这样的包运行在手机上时webview会阻止浏览器的远程调试请求。
      如果你想调试,那么把debug改为true后再打包。
      当然有些Android rom不是很规范,并不能阻止调试,这属于rom的bug。
    1. 专业加密加固加壳服务
      由于Android的特殊性,针对apk出现了加固、加壳产业,这也是业内常见的apk保护方案。
      很多应用市场都提供加固服务,比如360手机助手的加固,
    2. 还有专业公司如:爱加密,里面有免费的基础安全保障服务,也有收费的高级安全保障服务。

后记,有些非专业安全公司提供的所谓源码加密服务,其实是漏洞百出的。
安全无小事,使用专业安全服务产品更可信赖。

时间: 2024-11-09 00:29:06

关于HTML加密混淆、源码保护、代码安全,防止解压直接看源码的相关文章

ICSharpCode.SharpZipLi 压缩、解压文件 附源码

http://www.icsharpcode.net/opensource/sharpziplib/ 有SharpZiplib的最新版本,本文使用的版本为0.86.0.518,支持Zip, GZip, BZip2 和Tar格式 我们需要dll 在官网上也有,也可以从百度网盘下载 好了,深入的大家还要多多研究,今天我们简单介绍一下 简单的 单文件.文件夹的压缩和解压 先给大家看一下效果: 一.引入ICSharpCode.SharpZipLib 我们新建个帮助类 ZipHelper.cs  然后 添

ICSharpCode.SharpZipLib 压缩、解压文件 附源码

http://www.icsharpcode.net/opensource/sharpziplib/ 有SharpZiplib的最新版本,本文使用的版本为0.86.0.518,支持Zip, GZip, BZip2 和Tar格式 我们需要dll 在官网上也有,也可以从百度网盘下载 好了,深入的大家还要多多研究,今天我们简单介绍一下 简单的 单文件.文件夹的压缩和解压 先给大家看一下效果: 一.引入ICSharpCode.SharpZipLib 我们新建个帮助类 ZipHelper.cs  然后 添

APP加固技术历程及未来级别方案:虚机源码保护

传统App加固技术,前后经历了四代技术变更,保护级别每一代都有所提升,但其固有的安全缺陷和兼容性问题始终未能得到解决.而下一代加固技术-虚机源码保护,适用代码类型更广泛,App保护级别更高,兼容性更强,堪称未来级别的保护方案. (加固技术发展历程) 第一代加固技术-动态加载 第一代Android加固技术用于保护应用的逻辑不被逆向与分析,最早普遍在恶意软件中使用,其主要基于Java虚拟机提供的动态加载技术. 其保护流程是: 开发阶段中将程序切分成加载(Loader)与关键逻辑(Payload)两部

Eclipse导入Github上的Robotium源码进行代码分析的步骤

这篇文章应该只是针对像我这样的初级Maven用户的,因为自己花了不少时间来解决这个问题,而网上很多文章描述的也是语焉不详,所以记录下来以便后来如我者可以借鉴一二.文中有几点细节我觉得需要注意的我会高亮出来. 1. 问题描述 今天打算查看一下Robotum(其项目本身基于maven,因为我发现项目中有pom.xml文件)框架的源代码去了解其具体实现以加深理解,但下载后按照认知的方法去Import Maven Project后会发现函数跳转等功能通通不工作,按F3定位一个函数的声明位置时会出现: P

js源码保护

js的不可读化处理分为三个方面:压缩(compression).混淆(obfuscation) 和加密(encryption). (不可读化处理,这是我自己发明的术语,一切会增加代码不可读性的代码转换, 都可以这么叫,“增加代码不可读性”可能是代码转换的结果或者目的). 1. 压缩 这一操作的目的,是让最终代码传输量 (不代表代码量, 也不代表文件体积)尽可能小.压缩js的工具,常见的有:YUI Compressor.UglifyJS.Google Closure Compiler 等. 通常在

atitit.商业版 源码保护 与 java本地原生代码转换 的方案总结

atitit.商业版 源码保护 与 java本地原生代码转换 的方案总结 1. 为什么虚拟机语言容易被反编译 1 2. 源码泄露的问题问题 1 3. Excelsior JET 1 4. gcj.的流程 2 5. classloader方案,,还凑后 2 6. 制作伪exe,其实和上一种做法是一样的,只不过做成exe,调用系统的java.exe来运行它,这样的工具有nativeJ,exe4j等 3 7. 其他 3 1. 为什么虚拟机语言容易被反编译 ,但虚拟机的中间语言由于带了大量的"元数据&q

.NET源码保护控件VMProtect免费下载及使用教程脱壳等功能详解

原文来自VMProtect龙博方案网www.fanganwang.com VMProtect是一款全新的软件保护工具.与其它大部分的保护程序不同,VMProtect可修改程序的源代码.VMProtect可将被保护文件中的部分代码转化到在虚拟机(以下称作VM)上运行的程序(以下称作bytecode)中.您同样可把VM想象为具备命令系统的虚拟处理器,该命令系统与Intel 8086处理器所使用的完全不同.例如,VM没有负责比较2个操作数的命令,也没有有条件与无条件的移转等.就象您现在看到的,黑客必须

[转载].NET商业软件源码保护

列举工作以来遇到的各种类型的软件所采用的代码保护技术,只讲原理不涉及技术细节实现,以避免产生法律问题.有些朋友说直接把代码放在Github开源下载,开源可以促进技术交流与进步,然而值钱的代码都积压在硬盘里面,即使很烂的代码都卖了很多钱,赢得了许多客户与市场.珍惜爱护公司的代码,他们都是宝贵的财富. 以下保护技术主要测重于脱机验证与保护,不涉及联网(连接到许可证服务器)验证. 1.程序集混淆 Asembly obfuscate CLR代码的运行是即时编译执行的,.NET编译器只是将源代码文件编译成

[ios源码] 仿闲鱼二手交易平台-iOS源码-捡代码论坛

仿闲鱼二手交易平台-iOS源码-捡代码论坛 添加 首页模块和我的模块 首页水平滑动图利用自定义UICollectionViewFlowLayout实现 利用KVC,基于系统自带tabBar的进行定制实现底部TabBar. 页面跳转转场动画效果 封装刷新控件,仿闲鱼动画效果 动图演示(5.4M): Tag:闲鱼,iOS,动画,UICollectionView,视图布局 下载地址: 仿闲鱼二手交易平台-iOS源码-捡代码论坛http://bbs.jiandaima.com/thread-714-1-