omnipotent-front-end / blog

Some technology articles
MIT License
22 stars 2 forks source link

前端工程配置项加密方案 #13

Open tyuqing opened 4 years ago

tyuqing commented 4 years ago

当我们的前端工程想在不同的环境中开启和关闭某些功能时,我们可使用独立的配置文件存储一些配置项,工程中引入这些配置项,通过判断来开启和关闭特定的功能。 而前端的代码是暴露给用户的,若在构建时,将配置直接打包入项目代码中会比较容易被破解。如下图所示,该图为将配置直接引入项目进行打包后的代码,配置项会比较容易找到和修改。用户只需要对这些配置进行改动即可开启我们需要隐藏的功能。所以对配置进行加密就显得比较重要。

1

配置项加密方案如下图所示。

配置加密方案

  1. 配置文件分为基础配置和特定配置(青铜版配置、白银版配置、黄金版配置等等),特定配置需引入基础配置进行一个合并,得到一个完整的特定配置。
  2. 对完整版配置通过密钥进行AES加密,得到“加密后配置”。(一些常用加密算法的介绍可参考这篇文章
  3. 将密钥、工程代码、“加密后配置”一起进行打包。这样打包后的代码中配置项为“加密后配置”,用户较难定位到、破解和修改。
  4. 用户访问平台,前端代码运行时,通过打包时引入的密钥对“加密后配置”进行解密得到“完整版配置”,最后通过该配置完成功能的开启和关闭

下图就是引入“加密后配置”的打包示例。可以看到配置为一串无序的字符串,会相对较难破解。用户也只能在代码运行的过程中找到完整的配置(如果用户想破解的话),在该方案下,可及时找到了配置,也比较难对代码进行破解。

//TODO 这里再补一个使用“加密后配置”的打包示例图