在研究如何使JavaScript源代码更加安全的同时,我遇到了许多“解决方案”。但是大多数人说同样的话; "无法使您的源代码100%安全","尝试混淆","运行您的代码服务器端"等等。在stackoverflow和其他网站上阅读了很多帖子后,我得出的结论是,缩小和混淆的组合将完成这项工作(对我来说)。
但问题是:我们目前正在使用具有依赖注入的soma.js,而我们设置它的方式与混淆效果不佳。基本上就是这样:
var session = function(id, sessionModel){
this._sessionmodel = sessionModel;
}
映射:
injector.mapClass("sessionModel", project.SessionModel, true);
然后,混淆将函数中的sessionModel重命名为例如“A'”,但是由注入器在SessionModel上完成的映射仍然是“会话模型”'而不是' A',这基本上打破了代码。
我已经阅读了这篇关于同一主题Dependency Injection and Code Obfuscation的帖子,但它没有为我的问题提供真正的答案,所以我决定写自己的问题。
欢迎任何提示/提示/建议。 提前谢谢。
修改
似乎你可以告诉Yuicompressor通过提供'提示来排除某些标识符。进入这样的文件:"标识符:nomunge,identifier2:nomunge"。
var session = function(id, sessionModel){
"sessionModel:nomunge";
this._sessionmodel = sessionModel;
}
我对此进行了测试并且它有效,但这意味着你必须把它放在自己身上,如果你必须为每个脚本做这件事,那就很多了,特别是如果你有一个非常大的项目.. < / p>
进一步调查,如果有任何新的弹出
,请更新此帖子编辑2
已经有一段时间了,我每周只工作1天这个= S. 如前所述,您可以通过告诉它要排除哪些标识符来使其工作。 为此,我查看了正则表达式以获得&#34;映射的类&#34;以编程方式,因为手工操作只是疯了。
我基本上做的不是手工提供每一个提示,而是制作了一个标识符,例如&#34; #nominge&#34 ;;并使用一个简单的replaceregexp任务来查找它并用包含所有标识符的字符串替换它。这个字符串是通过加载脚本并使用tokenfilter进行构建来构建的。
<target name="build hints">
<loadfile property="hints" srcFile="${temp.loc}/all.js">
<filterchain>
<tokenfilter delimoutput=":nomunge,">
<ignoreblank/>
<containsregex pattern="${regexp}"/>
</tokenfilter>
</filterchain>
</loadfile>
<echo message="${hints}"/>
</target>
<replaceregexp file="${temp.loc}/all.js"
match="#nomunge"
flags = "g"
replace = "target:nomunge, dispatcher:nomunge, injector:nomunge,${hints}"
/>
现在这似乎可以完成这项工作......
答案 0 :(得分:0)
我支持soma.js框架,随时向我询问谷歌小组的问题,很乐意提供帮助。 这可能会有所帮助: https://groups.google.com/forum/#!topic/somajs/noOX2R4K58g Romu