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