【问题标题】:is it possible to obfuscate while using soma.js dependency injection?使用 soma.js 依赖注入时是否可以混淆?
【发布时间】:2014-12-11 00:38:18
【问题描述】:

在研究如何使 JavaScript 源代码更安全时,我发现了很多“解决方案”。但大多数人都说同样的话; “不可能让你的源代码 100% 安全”、“尝试混淆”、“运行你的代码服务器端”等。在阅读了 stackoverflow 和其他网站上的很多帖子后,我得出的结论是缩小和混淆的组合可以完成这项工作(对我来说)。

但问题是:我们目前正在使用带有依赖注入的 soma.js,而我们设置它的方式不适用于混淆。基本上是这样的:

var session = function(id, sessionModel){
   this._sessionmodel = sessionModel;
}

映射:

injector.mapClass("sessionModel", project.SessionModel, true);

然后混淆会将函数中的 sessionModel 重命名为例如“A”,但注入器在 SessionModel 上完成的映射仍然是“sessionModel”而不是“A”,这基本上会破坏代码。

我读过这篇关于同一主题 Dependency Injection and Code Obfuscation 的帖子,但它并没有为我的问题提供真正的答案,所以我决定写我自己的问题。

欢迎任何提示/提示/建议。 提前致谢。

编辑

您似乎可以通过将“提示”放入如下文件中来告诉 Yuicompressor 排除某些标识符:“identifier:nomunge, identifier2:nomunge”。

var session = function(id, sessionModel){
"sessionModel:nomunge";
   this._sessionmodel = sessionModel;
}

我对此进行了测试,它确实有效,但这意味着您必须自己动手,如果您必须为每个脚本都这样做,这将是一项繁重的工作,尤其是当您有一个非常大的项目时..

会进一步研究,如果有新的弹出来更新这篇文章

编辑 2

已经有一段时间了,我每周只在这个 =S 上工作 1 天。 如前所述,您可以通过告诉它要排除哪些标识符来使其工作。 为此,我研究了正则表达式以编程方式获取“映射类”,因为手工操作实在是太疯狂了。

我基本上所做的不是手动输入每个提示,而是制作了一个标识符,例如“#nomunge”;并使用一个简单的 replaceregexp 任务找到它并将其替换为包含所有标识符的字符串。该字符串是通过加载脚本并使用令牌过滤器来构建的。

<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}"
/>

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

【问题讨论】:

  • 简单的一点是,客户端上的任何事情都不是 100% 安全的,因为您无法了解用户的环境。如果有疑问,或者如果对数据做任何稍微重要的事情,请始终先在服务器端验证它。
  • 嘿,我不是想让我的代码 100% 安全,我只是想通过混淆来降低它的可读性。问题是它目前无法正常工作,我希望其他人知道解决方案。感谢您的意见。

标签: javascript dependency-injection obfuscation


【解决方案1】:

我是 soma.js 框架的开发者,请随时在 google 群中向我提问,乐于提供帮助。 这可能会有所帮助: https://groups.google.com/forum/#!topic/somajs/noOX2R4K58g 罗姆

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 2017-03-10
    • 2020-02-02
    • 2017-01-01
    • 1970-01-01
    相关资源
    最近更新 更多