保护JavaScript网络应用程序/游戏的方法有哪些?

11

背景:我计划实现一个休闲游戏部署到 web 应用程序中,但并不想使用 Flash,而是纯粹的 Javascript。然而 Flash 的一个好处是它分发二进制而不是源代码,因此更容易保护代码不被他人重用/盗用或防止客户修改代码来“作弊”玩游戏。

那么我的问题是:有哪些方法可以同样保护 Javascript 应用程序?我只能使用常规方法使用代码混淆器吗?这是否足够?


8
投票者:downvote是用来针对不好的问题,而不是关于你不想别人做某事的问题。这个问题在技术上没有任何错误。 - Pointy
2
我认为这可能不太可能。正如你所说,有混淆技术。但是在某个时候,浏览器必须能够看到代码以解释它,这意味着你必须向客户端提供代码。 - David
不要在互联网上发布! :) - meder omuraliev
1
@Roy Tang:为了防止作弊,唯一真正的选择是让游戏引擎在服务器端运行并验证所有输入。永远不要隐式地相信客户端机器告诉你的内容。 - David
Roy,我投票关闭了这个问题,但是使用了错误的重复。在如何防止您的JavaScript被盗用,复制和查看?中有更好的答案。 - Marcel Korpel
显示剩余3条评论
3个回答

3

一个代码混淆器是你所能做的全部。无论你做什么,可执行代码将/必须在浏览器中可用。


2
使用AJAX来让你的游戏验证服务器代码,这对于多人游戏也非常有用。验证可以防止某些人通过修改代码来作弊。
另外,Flash并不免疫被他人攻击。人们可以下载二进制文件并在任何地方发布它。而且Flash反编译器确实存在,并且相当有效。

这个,我喜欢这个想法 - 你有更多的信息吗? - Barrie Reader
谢谢!我已经在考虑这个问题,但这意味着每次状态变化都需要通过ajax调用将我的游戏状态同步回服务器...可能会产生大量的请求,所以我想知道是否有其他替代方案。 - Roy Tang
@Roy - 在这种情况下:它是什么类型的游戏? - Marcel Korpel
@Neurofluxation - 就高层次而言,我不确定我能提供什么更多的信息。我认为实际的实现会根据你正在做的事情而改变。例如,如果你的玩家有一个能量级别,将该信息存储在服务器上并验证能量级别是否相同(或至少符合玩家应该拥有的水平)。 - Cfreak
1
@Roy - 不一定需要...你真正需要验证的时间只有在加载游戏时(以确保它不在未经授权的服务器上运行),以及两个玩家之间有任何交互时。只有影响玩家本身的状态更改不应该是一个问题。如果玩家篡改它,可能会影响他看到的内容,但在服务器在交互时进行验证后,所有问题都将得到解决。 - Cfreak

0
为什么你特别想要它用JavaScript实现呢?你可以使用node.js在服务器端运行JavaScript代码来保护数据,并从客户端JavaScript与其进行交互。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接