Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用soma.js依赖项注入时是否可能混淆?_Javascript_Dependency Injection_Obfuscation - Fatal编程技术网

Javascript 使用soma.js依赖项注入时是否可能混淆?

Javascript 使用soma.js依赖项注入时是否可能混淆?,javascript,dependency-injection,obfuscation,Javascript,Dependency Injection,Obfuscation,在研究如何使JavaScript源代码更安全时,我发现了许多“解决方案”。但大多数人都说了同样的话;“不可能使你的源代码100%安全”、“尝试模糊处理”、“运行你的代码服务器端”等等。在阅读了stackoverflow和其他网站上的许多帖子后,我得出结论,缩小和模糊处理的组合可以完成这项工作(对我来说) 但问题是:我们目前正在使用soma.js和依赖项注入,而我们设置它的方式在模糊处理中不起作用。基本上是这样的: var session = function(id, sessionModel){

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

但问题是:我们目前正在使用soma.js和依赖项注入,而我们设置它的方式在模糊处理中不起作用。基本上是这样的:

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

injector.mapClass("sessionModel", project.SessionModel, true);
模糊处理会将函数中的sessionModel重命名为例如“A”,但是注入器在sessionModel上完成的映射仍然是“sessionModel”,而不是“A”,这基本上破坏了代码

我读过这篇关于同一主题的文章,但它并没有为我的问题提供真正的答案,所以我决定写我自己的问题

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

编辑

似乎您可以告诉Yuicompressor排除某些标识符,方法是将“提示”放入如下文件:“identifier:nomunge,identifier2:nomunge”

我对此进行了测试,它是有效的,但这意味着你必须把它放在你自己身上,如果你必须为每一个脚本都这样做的话,这是一个很大的工作,特别是如果你有一个非常大的项目

我会进一步调查,如果有新的消息出现,更新这篇文章

编辑2

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

我基本上做的不是手工输入每个提示,而是制作了一个标识符,例如“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}"
/>


这似乎可以完成任务,目前…

我支持soma.js框架,请随时向我询问有关google group的问题,很乐意提供帮助。 这可能会有更多帮助:
Romu

简单的一点是,客户端上没有任何东西是100%安全的,因为您无法了解用户的环境。如果有疑问,或者如果对数据做任何事情,甚至是稍微重要的事情,总是首先在服务器端验证它。嘿,我并不是想让我的代码100%安全,我只是想通过模糊处理降低可读性。问题是它目前工作不好,我希望其他人知道解决方案。谢谢你的意见。
<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}"
/>