“隐藏”的最佳实践JavaScript HTTP请求

Best practice for "hidden" JavaScript HTTP request?

本文关键字:JavaScript HTTP 请求 最佳 隐藏      更新时间:2023-09-26

我不太确定这个问题应该怎么表述,但我认为这更像是一个建议请求,而不是一个问题本身。

我们正在创建一个HTML5服务,让用户在完成一系列推广活动后获得奖励。这些优惠大多是视频广告观看。我们已经有一个实现的基于Flash,但HTML5我遇到更多的问题如何让请求调用验证合法看着视频广告。Flash界面,我们有一系列的HTTP请求的SWF,一些视频播放开始,中间和结束时,每一个这些请求是相互关联的,意义,一个需要下一个请求的响应,等等。大多数"隐藏"这个"算法"的逻辑都被轻微地隐藏在SWF二进制文件中,它几乎达到了它的目的。

然而,对于HTML5,我们必须依赖于世界可见的JavaScript和"隐藏"的逻辑是开放的。所以,我想这是一个关于如何处理这些案件的建议,这样一个熟练的人就不能(如此容易地)访问它并利用该服务以编程方式获得信任。对JavaScript进行模糊处理似乎可以有所帮助,但这并不能完全保护。

当然后端有一些额外的安全性(如频率上限,每个用户上限等),但由于我们的上限每天都清除,熟练的人仍然可以找到一种方法来获得所有可用的优惠,即使没有完成它们。

听起来你想要确保你的服务器能够区分用户以你认可的方式与你的UI交互而产生的请求和不以这种方式发生的请求。

这样的系统有许多攻击点。

  1. 检查JavaScript以找到事件处理程序并通过Firebug或其他工具调用它们。
  2. 检查代码中的密钥,并生成HTTP请求,而不涉及浏览器。
  3. 在浏览器中运行代码以编程方式生成事件。
  4. 使用第三方工具,使浏览器产生点击。

如果你有合理的解决方案仪表攻击(3和4),然后你可以看看有没有办法隐藏javascript函数从最终用户?获取秘密到客户端以允许您签署请求的方法。除此之外,混淆是阻止不太确定的攻击者利用的唯一(也是不完美的)方法,限速和UI事件日志可能是阻止确定的攻击者从大规模欺诈中获益的最佳选择。

您将无法阻止一个确定的攻击者(即使使用SWF,尽管它更加模糊)。最好的办法是确保:

  1. 规避你的措施在努力方面是昂贵的,也许通过使用计算昂贵的加密算法,所以他们不能仅仅设置一堆脚本来做到这一点。
  2. 收益是最小的(用户上限是如何减少收益的一个例子;如果你是在给分数,没关系;如果你要寄20美元的钞票,那你就倒霉了)

成本效益。