【发布时间】:2018-11-03 13:18:02
【问题描述】:
我有一个页面,允许用户观看 YouTube 视频并在视频播放结束后自动获得奖励。这是通过 Youtube JS API 完成的:
伪代码:
function videoStoppedPlaying() {
requestRewardFromServer(); // currently uses an XMLHttpRequest
}
这种方法的问题在于,人们只能打开浏览器控制台并手动调用requestRewardFromServer()。
我已经对代码进行了混淆处理,但这就像在船上的洞上贴绷带一样;它并没有解决问题。
编辑:到目前为止,唯一接近的解决方案是使用时间戳。尽管这不是理想的解决方案,但我会牢记建议并尝试进一步混淆 JS 代码。
有什么建议吗?
【问题讨论】:
-
我认为你可以(也许你已经有)有一个方法 videoStartedPlaying() 也调用服务器。然后,当第二种方法到达服务器时,服务器将这两个请求之间的时间与视频的时间进行比较。如果它较低,则意味着出现问题。这并不完全是您想要的,但它会带来一些小的改进。
-
对此没有真正的“解决方案”,因为您必须信任来自客户端的信息。我至少也会使用时间戳,并将播放开始和结束时间与视频长度进行比较(假设你想强迫人们在获得奖励之前观看整个 sh*tty 的事情。)当然这不会阻止我从调用与以前相同的手动记录播放开始时间戳的方法,然后在几分钟内执行其他操作,然后调用第二个说我已经看完的方法...
-
……终于没有什么能阻止用户打开您的页面然后查看其他内容了。
标签: javascript api security obfuscation