使用soma.js依赖注入时是否可能进行模糊处理?

时间:2014-10-14 15:01:26

标签: javascript dependency-injection obfuscation

在研究如何使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}"
/>

现在这似乎可以完成这项工作......

1 个答案:

答案 0 :(得分:0)

我支持soma.js框架,随时向我询问谷歌小组的问题,很乐意提供帮助。 这可能会有所帮助: https://groups.google.com/forum/#!topic/somajs/noOX2R4K58g Romu