为什么混淆的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条回答
Violet凡
2020-08-18 12:39

嗨,Emil,

我对您的grunt文件做了一些修改-本质上是从grunt插件模块加载任务,并将其包含在每个默认执行中。 现在,我可以看到dist文件夹中所有文件被混淆了。 这是我所做的修改:

 var CombinedConfigs = Object.assign({},gruntConfig,gruntNewConfigs);

 grunt.initConfig(combinedConfigs);

 grunt.loadNpmTasks('grunt-available-tasks');
 grunt.loadNpmTasks('grunt-javascript-obfuscator');

 var task = [" availabletasks"," clean"," lint"," build"," javascript_obfuscator"];

 grunt.registerTask(" default",任务);
 

注意:我添加了可用任务只是为了确保Grunt正在加载混淆器任务。 这是我的package.json中的行(我没有使用生产依赖项,因为这里不需要它们):

" devDependencies":{
 " @ sap/grunt-sapui5-bestpractice-build":" 1.3.62",
 " javascript-obfuscator":" 0.18.1",
 " grunt-javascript-obfuscator":" 1.1.0",
 " grunt-available-tasks":" 0.5.0"
 }
 

此后,当我使用WebIDE部署应用程序时,它显示以下日志消息(告诉我Grunt正在运行并正在调用混淆插件):

当我运行应用的新版本活动版本时,它会显示index.html被混淆,例如:

ComponentPreload.js文件也是如此:

我认为应该检查两件事:

1)缓存代理:您可能正在使用Web代理软件,例如Squid 而是为您缓存页面,而不是从服务器加载页面。 您的浏览器也可能提供了此缓存页面。 为了确保您的浏览器没有从缓存中加载资源,请使用Chrome开发者工具"网络"标签下的"禁用缓存"选项。 为了防止它从您的代理加载,建议您与您的代理管理员联系。

2)每当您从WebIDE部署html5应用程序时,它将向您显示一个屏幕,其中包含当前 部署版本以及当前处于活动状态的版本。 您可以选择部署新版本(我已经这样做了-您可以在日志中看到版本1.0.3)。 您可能已将WebIDE部署设置为部署新版本而不先激活它。 这将防止您加载混淆的版本。 并且,当您将其加载到浏览器中时,它将显示未混淆的活动版本。

希望这会有所帮助!

最诚挚的问候,
Ivan

# p#

嗨,伊万·米里索拉

我只是想问一问 您设法重现了我的最新评论,或者是否需要进一步澄清?

我们非常感谢您的评论和帮助,因为我们在这方面没有经验。

最好的问候,
Emil Stepanian

一周热门 更多>