最近闲暇之余整理一篇文章分享给大家。
我们先理下需求,加密的目的是什么?加密到什么级别?为此我们可以牺牲什么? 我们知道这个世界不存在绝对的安全,加密会被破解、混淆会被反混淆。 技术小白、开发者、黑客,是完全不同的级别,防范不同级别的人策略都不一样。 防范力度越大,投入代价也越大,比如聘请专业的安全公司。 除了投入,我们还需要考虑程序的执行性能和用户体验。 加密的代码在运行时必须解密,混淆后尤其是混淆HTML后,程序的执行性能会下降。 是否真的有必要做这类的源码保护,还需要谨慎取舍。
一般而言,前端的代码,负责的是用户体验,后端的代码,负责更安全的数据处理。 前端不要涉及泄漏太多涉密信息,那么加密的意义不是特别大。 我很少在前端代码里看到值得保护的内容,比如高深的算法,很多代码是没必要牺牲用户体验来保护的。 但有些前端代码涉及最终用户的数据安全,此时还是要努力做数据保护的。
接下来具体分析几种手段。
不要在前端放敏感数据 这个听起来是废话,但真的很重要。 有些开发者在手机端明文存用户的密码,这是非常危险的事情。 即使是原生开发,一旦手机被root,也会造成数据泄漏。更何况HTML5开发。 比较好的做法是手机端存token,而不是密码,这里有篇文章专门介绍这块,涉及做登录的开发者推荐仔细看看设计基于HTML5的APP登录功能及安全调用接口的方式(原理篇)
js、css压缩 压缩不是加密,也不是混淆。但压缩后的js文件,往往也具有混淆的功能。 js、css压缩是很常见的技术,我们经常看到各种框架的文件名是xxx.min.js,xxx.min.css。 使用合适的js、css压缩方案,可以减少文件体积、提高载入速度,最重要的是,它还能加快程序的执行性能。简直是有百利而无一害。 混淆js比较常用的工具是yahoo的YUI混淆,在HBuilder里点菜单工具-插件安装,里面有YUI compress,可以压缩js和css。 如果js、css比较大,发布前压缩下是比较推荐的做法。
HTML、js、css混淆 压缩虽然也能混淆,但不是以让别人看不懂为目的,混淆是真正以别人看不懂为目的。 但是这样的混淆就不像压缩那么有百利而无一害了,它会降低程序执行性能。 一些开发者不希望发行包解压后可以直接看到源码,那么此时可以使用混淆方案。 网上搜索HTML混淆,资料和工具都非常多。 原理都是类似的,js代码变成乱七八糟的字符串,然后用eval执行,HTML代码变乱七八糟字符串,用document.write或innerHTML执行,css也可以动态的在document.write里写
查看更多关于关于HTML加密混淆、源码保护、代码安全,防止解压直接看源码_html/css_WEB-ITnose的详细内容...