如何确定我的客户端是否访问我的服务器?

时间:2014-01-28 15:34:45

标签: javascript security client-server client

假设我们有一个客户端 - 服务器应用程序通过网络进行通信,客户端用javascript编写(所以几乎开源)。比方说,我们想要运行多人游戏内浏览器并从广告中收集一些收入。我们希望保持业务,因此我们保持服务器部分的安全,处理大部分逻辑,并且我们接受前端/ UI处理客户端被抛入野外并且可能被任何人搞砸。

问题是:如何检测和防止有人复制Web应用程序的所有面向公众的内容的情况,包括JS客户端,将其放在他/她自己的服务器上,带有他/她自己的广告,潜在的恶意软件等,而'被劫持的'客户仍然与我们的原始服务器对话?

或者这可能只是愚蠢而且有一些明显的原因导致这种行为不起作用(这可能就是为什么我没有发现任何人提到它)?我觉得我在那里遗漏了一些东西,但到目前为止我的经验中没有任何内容告诉我上述段落中的假设情况对于劫持者来说是不可能的,甚至是有利可图的。

2 个答案:

答案 0 :(得分:2)

您无法真正阻止人们使用您的客户端连接到他们自己的服务器。 MMORPGS已经完成了很长时间,即使他们已经编译了胖客户端。当然,在这些情况下,人们不得不从头开始重新编写服务器代码。

为防止用户屏蔽您的广告,您可以在投放广告时为每个客户设置时间戳。如果客户端仍然连接但未在一段时间内从服务器请求新广告,那么各种各样的事情都可能出错 - 例如,您的服务器可能会修改针对该播放器的掷骰子,这样他就会死于可怕的死亡除了最简单的怪物之外的所有怪物。这是在你的服务器代码中,所以不能搞乱,复制你的代码的人很快就会耗尽玩家基础。

这种方法的重要之处在于不要给客户一个线索,以及为什么它在流氓名单上。不知道要修复什么使得攻击者更难以“修复”已更改的代码。

答案 1 :(得分:0)

我会将我的评论转化为答案。该请求具有引荐来源,您对引荐来源进行验证。当您从different services请求api密钥时会发生这种情况。