首页 > 解决方案 > 获取 javascript 文件中存在的令牌

问题描述

我正在编写一些我们希望在某些时候进行逆向工程的客户端 JavaScript 代码。我想要一种我们可以合理肯定地说我们没有公开任何调试信息的方式。我们通过 uglify 运行代码,所以它混淆了变量名。

我的想法是从文件中获取所有字符串文字(和令牌?)并使用开玩笑的快照匹配它们,但我找不到可以从 JS 文件中提取信息的工具。有没有人有这样做的经验?

更新:我认为如果我举个例子会有所帮助

假设有人要编写这段代码:

function processSensitiveData () {
  console.log('processing sensitive data')
  doMoreThings();
}

processSensitiveData();

这并没有错,因为我们在生产环境中剥离了 console.log 语句,并且 uglify 转换了函数名,因此不存在敏感信息。假设有人将其修改为以下代码:

function processData (dataType) {
  console.log('processing ' + dataType + ' data');
  doMoreThings();
}

processData('sensitive');

现在,虽然 console.log 语句被删除,但“敏感”仍将出现在最终输出中。我们想要避免这种事情。虽然代码审查是第一道防线,但在代码审查中很可能会错过这一点,尤其是与其他更改结合使用时。我想让计算机来做,因为这是计算机比人类做得更好的事情。理想情况下,这将是一条 linting 规则,但这将是一个非常复杂的规则。

标签: javascript

解决方案


代码审查。这样,如果您查看任何和所有签入源代码的代码,您就会知道是否有调试信息试图潜入您的存储库。除此之外,您还可以在部署之前进行关键字搜索,以及“alert”、“debug”和其他调试 JavaScript 关键字。


推荐阅读