为什么混淆的SAPUI5 App .js文件在浏览器开发工具中显示为缩小版本?

2020-08-18 12:12发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨社区 希望有人可以在下面的...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨社区


希望有人可以在下面的难题中给出提示。

我们正在寻找对SAPUI5应用程序中的.js文件进行混淆的方法。 在构建项目时,我们设法增强了Gruntfile使其包含混淆步骤。 如果我们查看/dist文件夹,则所有文件都是我们期望的被混淆的文件。


但是,当我们部署项目并在浏览器开发工具中检查源文件时,我们得到的是缩小文件,而不是经过混淆的文件。 从本质上来说,使混淆变得毫无价值,因为"源"文件可用于项目部署位置的任何使用者。

有人可以帮助解释为什么在加载已部署的SAPUI5应用程序而不是混淆的SAPUI5应用程序时看到.js文件的缩小版本吗?

感觉SCP会将源代码的副本保存在某个地方并与客户端共享。

一些背景信息:

  • Component-preload.js文件也已被混淆。
  • 我们尝试排除/dist文件夹中包含源代码的-dbg.js文件。
  • 我们尝试将/dist文件夹复制到一个新项目中,并将其作为独立版本部署,其中所有.js文件都已被混淆。
  • 我们尝试将混淆后的项目部署在另一个SCP帐户上,并使用另一台PC排除缓存。
  • 当我们从SAP Web IDE Full Stack运行应用程序时,我们会在浏览器开发工具中看到混淆的文件。
  • 这是我们当前正在使用的混淆设置:
    obfuscationOptions = { controlFlowFlattening:true,
    controlFlowFlatteningThreshold:0.75,
    deadCodeInjection:true,
    deadCodeInjectionThreshold:0.4,
    debugProtection:false,
    debugProtectionInterval:false,
    disableConsoleOutput:false,
    identifierNamesGenerator:'十六进制',
    log:false,
    namedGlobals:false ,
    rotationStringArray:true,
    selfDefending:true,
    stringArray:true,
    stringArrayEncoding:'base64',
    stringArrayThreshold:0.75,
    transformObjectKeys:true,
    unicodeEscapeSequence: false
    };

任何帮助或提示将不胜感激。

谢谢

Adam lamaa

8条回答
悠然的二货
2020-08-18 12:43 .采纳回答

嗨,埃米尔,

在Chrome开发人员工具的"来源"标签下,所有未混淆的文件都显示在" <未知>"位置。 这意味着它们位于浏览器的内存中,但是没有作为资源从任何服务器加载。 它们由Component-Preload.js资源放在那里。 即使该JS文件被混淆(人类不可读),浏览器仍能够读取和解释它。 因此,它的作用是将所有应用程序javascript文件加载到内存中。 一旦将其加载到内存中,浏览器将使它们再次变得可读。 我找不到与之相关的任何官方google文档-这是简单的经验信息。

这种预加载技术的实现方式是,它可以缩短应用程序的加载时间。 它向服务器执行单个请求,而不是多个请求,这反过来又会使您的应用程序加载速度变慢(在发出每个请求后,浏览器将不得不等待将所有js文件加载到内存中-因此屏幕将一片空白 直到它可以为您呈现UI为止。 预加载将在一瞬间将所有内容加载到内存中的速度更快-因此您的应用程序将显示得更快。

为避免所有这些情况,您必须从以下位置删除Component-Preload.js文件 dist文件夹。 然后,这将迫使浏览器从服务器加载js文件-因此它将在自己的请求中加载每个文件。 当然,这会使您的应用程序加载时间效率降低。

但是,我必须说,试图混淆已部署应用程序中的源代码不会阻止人们弄清楚文件上写的内容 。 大多数浏览器的开发人员工具都具有一项功能,可以即时缩小/缩小外观并模糊化源代码。 例如,Chrome浏览器具有一个按钮,可将缩小的源转换为任何开发人员都可以解释的格式化源。 我记得曾经看到过这样的功能,也可以对混淆的源代码执行同样的功能。

因此,如果您打算保护知识产权,那么对源代码进行混淆就不会为您做这件事。 相反,它可能阻止用户利用更快的应用程序加载时间。

我建议您将任何需要保护的复杂逻辑放在SAPUI5应用程序正在使用的服务下。 您将以这样的方式进行操作,即您的UI仅负责显示/输入数据,而不负责处理数据。

最好的问候,
Ivan

一周热门 更多>