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