阅读一段js关于加密功能的代码,一处不大理解

整段代码的功能用来加密信息。加密的前提是从先接口获取一个base64的随机字符串字段mapString,并解码base64。代码里为何使用构造动态函数并执行的方式来获取解码值,而不直接去decode获取,这样写的用意何在,是出于安全考虑吗?

// 一下为原始代码
 let safety = Function('return ' + base64decode(mapString))()

 // 为何不直接使用这种方式
  let safety = base64decode(mapString)

2个回答

这个得看你mapString解码后是什么,如要引用的某个全局变量的值,就需要Function

直接 let safety = base64decode(mapString)就是变量名

而let safety = Function('return ' + base64decode(mapString))()得到的是变量的值,因为return 返回变量值

dabins
qq-dabins 哦,明白了, 除非 Function('return \'' + base64decode(mapString) + '\'')(),才是一样,否则没有引号,base64的结果是一个变量名
大约 2 年之前 回复

解码回来的应该是一个字符串的数组吧。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!