我可以混淆离子应用程序吗?如果有,怎么样?

时间:2015-09-27 15:55:23

标签: angularjs cordova ionic-framework obfuscation minify

任何cordova应用程序只是一个本机Web视图和一个包含HTML javascript和css中的全部功能的www文件夹,因此应用程序完全暴露,我怎样才能让任何人都尽可能难以阅读应用程序源代码码?

5 个答案:

答案 0 :(得分:4)

是的,你可以。有一个cordova插件可以隐藏html,js和css文件。你可以在这里找到它:Cordova crypt file plugin

答案 1 :(得分:3)

您真的很关心我的建议是使用专业服务来保护您的代码。例如。 Jscrambler

答案 2 :(得分:0)

我发现它,角度缩小时的问题是缩小会破坏依赖注入。

一种解决方案是使用基于字符串注入的语法,将每个注入的参数映射到一个永远不会受到缩小影响的字符串。

示例:

angular.module('app', []).controller(['$scope', function($scope) { 
   //code
}]);

另一个解决方案是使用ngAnnotate我更喜欢将它与gulp任务运行器一起使用

var gulp = require('gulp');
var ngAnnotate = require('gulp-ng-annotate');
var concat = require('gulp-concat');
var uglify= require('gulp-uglify');

gulp.task('task1', function () {
   return gulp.src('src/js/*.js')
   .pipe(concat('bundle.js'))
   .pipe(ngAnnotate())
   .pipe(uglify())
   .pipe(gulp.dest('dist'));
});

答案 3 :(得分:0)

另一个好的功能是隐藏重要脚本的位置路径。我为这个https://www.npmjs.com/package/location-hide

找到了一个很棒的npm插件

转为

<script src="test/folder/sample.js" type="text/javascript"></script>  
<link href="test/stylesheet/perfect-scrollbar.css" rel="stylesheet">

进入

<script src="TNANIuTOLZfmLYwaPDIYhcZDVOWKodqYhysaTeQHFPDhYlDLCOtxZqYmkKAhaSwSgbsYOWlpBzVSBtMZKSfwRqvPSqWVlBBuzHR" type="text/javascript"></script>  
<link href="gyXeFnOEvZbgTjLvdZRnsyrfhaXqffkDjcdATTouqpIenCalLRXKamuXEtiKbPGCsNrdQIaqTMTNWsLyLFuxygKytaruWzSjKYMq" rel="stylesheet">  

它会生成新的jquery包含这样的代码,以便在外部文件中包含带有javascript的脚本

$('[src=\'TNANIuTOLZfmLYwaPDIYhcZDVOWKodqYhysaTeQHFPDhYlDLCOtxZqYmkKAhaSwSgbsYOWlpBzVSBtMZKSfwRqvPSqWVlBBuzHR\']').attr("src", "test/folder/sample.js")  
$('[href=\'gyXeFnOEvZbgTjLvdZRnsyrfhaXqffkDjcdATTouqpIenCalLRXKamuXEtiKbPGCsNrdQIaqTMTNWsLyLFuxygKytaruWzSjKYMq\']').attr("src", "test/stylesheet/perfect-scrollbar.css") 

另外,我建议您将所有外部JavaScript代码包含在一个单独的js文件中。此文件放在索引文件的根目录中,您可以将其设为

<script src="./allinone_external_file.js" type="text/javascript"></script>

然后做出正确的htaccess,没人能访问此文件。您还可以为每个正文可以看到的源代码制作一个虚假的导入脚本。但是这个文件只是真正的外部js文件的重定向。你做了多次这样的例子+使用其他混淆工具。这将保护您免受使用您的JavaScript代码搜索漏洞的人。我知道这没什么大不了的,如果你知道如何,也许你可以看到jquery包含代码。但无论如何它是一个很好的保护。

答案 4 :(得分:0)

我建议使用babili库(https://github.com/babel/babili) 并形成您的应用程序,以便使用电子分发来自混淆代码,而非源代码。

例如,package.json包含如下脚本:

{
  "presets": ["es2015"]
}

.babelrc

{{1}}

BTW babel也支持ES6 / 7混淆

相关问题