保护/模糊JavaScript API请求

时间:2018-05-24 10:36:39

标签: javascript api security obfuscation

我有一个页面,允许用户观看YouTube视频,并在视频结束播放后自动收到奖励。这是通过Youtube JS API完成的:

伪代码:

function videoStoppedPlaying() {
    requestRewardFromServer(); // currently uses an XMLHttpRequest
}

这种方法的问题是可以打开浏览器控制台并手动调用requestRewardFromServer()

我已经对代码进行了混淆,但这就像把绷带放在船上的一个洞里;它没有解决问题。

编辑:到目前为止,唯一接近的解决方案是使用时间戳。尽管这不是理想的解决方案,但我会将建议铭记于心,并尝试进一步模糊JS代码。

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

获得奖励时,请存储Youtube视频ID,以便每个视频获得至少一个奖励。当然,你必须跟踪视频ID,否则你可以传递任何字符串。

为了防止用户在不观看视频的情况下获得奖励,您可以构建一些计时器,以便在超过时间后获得奖励。

答案 1 :(得分:0)

以下是我对此的看法 -

我觉得你需要潜入服务器端。

  • 在服务器上设置会话变量,例如video_length = some_length。
  • 从视频开始起,向服务器发送ajax请求并设置一些会话变量,如video_started = some_time。
  • 现在,当您致电requestRewardFromServer()时,请将current timevideo_start进行比较。它需要greater than or equal to video_length

如果满足条件,奖励他们,否则不。您可能会说这并不能保证观看完整的视频。是的,但至少那个试图欺骗的人必须等待那么久。

答案 2 :(得分:0)

控制用户实际观看视频的唯一解决方案,除了检查结束时间 - 开始时间与视频长度之外,还要实际检查用户是否真正在观看视频。我想你有一个功能可以告诉你用户的视频(或百分比)的分钟。因此,您可以通过javascript定期通知服务器:例如,每5秒或每5%的视频,客户端必须向服务器发送xmlhttp请求以通知它。服务器将检查客户端是否按相应的顺序接收了所有请求(或者差不多,也许他重新分配了部分请求,您将不得不找出合适的算法)。

这并不容易,它需要一些工作,并不是100%'防弹'。但是,任何与javascript相关的内容仍然可以在本地操作。