0

是否可以找到在匿名函数 (IIFE) 中声明的随机生成的值,如果可以,如何找到?

(function () {
  // assuming an epic, obscured, random function
  var salt = random()*10000|0;

  // assuming an event manager
  Events.on('custom event', function () {
    // do something amazing with salt here
  });
})()

假设:

  • 该函数是通过ajax加载的
  • 它在加载时执行(很难包含断点)
  • 有一个适当优雅的解决方案来测试注入(有这样的事情吗?)。
4

2 回答 2

2

JS 中的一个简单断点会暴露盐值。IIFE 之外的代码无法访问它(立即调用函数表达式 - 您正在调用匿名函数),但如果您试图阻止调试器通过 IIFE 内的断点看到它,那么 JS 不会阻止无论如何。

例如,您可以在生成盐值的位置设置断点并查看它是什么,或者如果该代码是通过 ajax 动态加载的,您可以在 ajax 加载代码上设置断点,然后逐步加载代码,直到然后,您可以设置一个断点来创造销售价值。

于 2013-09-09T06:24:21.047 回答
1

我想办法破解这个,首先设置一个断点并覆盖盐,或者覆盖Math.random以始终返回相同的值。并且没有办法保护您的程序免受此影响。另一方面,很难在缩小和混淆的脚本中找到这段代码。

于 2013-09-09T06:31:45.813 回答