Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Flash和PHP中报告真实的游戏分数_Php_Flash_Security_Variables - Fatal编程技术网

在Flash和PHP中报告真实的游戏分数

在Flash和PHP中报告真实的游戏分数,php,flash,security,variables,Php,Flash,Security,Variables,嗨,我在做一个flash游戏,只是想知道,我怎样才能保护ingame的分数不被黑客攻击?目前,我使用的是一个随机数,在服务器上设置并发送给客户端,然后使用哈希函数将“score+randNumber”散列得更复杂一些,但思路相同,然后我将结果分数和散列发送给服务器,显然记录了企图作弊的行为。到目前为止,这是可行的,但是通过反编译flash并找出散列公式来破解分数仍然很容易。有没有其他方法可以将分数传输到服务器,而几乎没有或根本没有被黑客攻击的可能性?尝试将您的业务逻辑转移到服务器端,因为这更难被

嗨,我在做一个flash游戏,只是想知道,我怎样才能保护ingame的分数不被黑客攻击?目前,我使用的是一个随机数,在服务器上设置并发送给客户端,然后使用哈希函数将“score+randNumber”散列得更复杂一些,但思路相同,然后我将结果分数和散列发送给服务器,显然记录了企图作弊的行为。到目前为止,这是可行的,但是通过反编译flash并找出散列公式来破解分数仍然很容易。有没有其他方法可以将分数传输到服务器,而几乎没有或根本没有被黑客攻击的可能性?

尝试将您的业务逻辑转移到服务器端,因为这更难被黑客攻击。使用flash只是打印结果,而不是存储结果。在服务器而不是客户端中进行散列,这样反编译就不会暴露您的逻辑。

尝试将您的业务逻辑移动到服务器端,因为这样更难破解。使用flash只是打印结果,而不是存储结果。在服务器上而不是在客户机上进行散列,这样反编译就不会暴露您的逻辑。

您的散列不会增加安全性,但只会增加系统的模糊性,即在实践中很难输入假分数,但理论上的障碍保持不变。关于这类安全性。任何形式的校验和和加密都不会对反向设计应用程序协议的攻击者起到任何作用——这很难,但并不像听起来那么难


你唯一的希望就是把游戏的大部分修改成你控制的机器,即你的服务器。例如,一个好主意可能是客户端发送一个包含用户输入的所有操作的重播文件,在服务器上重播游戏,然后在服务器上计算分数。

散列不会增加安全性,但只会增加系统的模糊性,即在实践中更难输入假分数,但理论上的障碍依然存在。关于这类安全性。任何形式的校验和和加密都不会对反向设计应用程序协议的攻击者起到任何作用——这很难,但并不像听起来那么难


你唯一的希望就是把游戏的大部分修改成你控制的机器,即你的服务器。例如,一个好主意可能是客户端发送一个包含用户输入的所有操作的重播文件,在服务器上重播游戏,然后在服务器上计算分数。

使用AES加密而不是散列

提供了一个很好的AES实现,尽管它需要在PHP方面做一些工作。这是一个可以使用的工作示例


还有一个解决方案使用JavaScript在客户端进行编码。您可以下载包含PHP、JS、Flex和AIR代码的完整软件包。

使用AES加密而不是哈希

提供了一个很好的AES实现,尽管它需要在PHP方面做一些工作。这是一个可以使用的工作示例


还有一个解决方案使用JavaScript在客户端进行编码。您可以下载包含PHP、JS、Flex和AIR代码的完整软件包。

我不知道如何在flash中实现这一点,-实际上,flash客户端下载到客户端的机器上进行播放,因此可以对其进行反编译。这也意味着,如果我不在客户端保护它,分数可能会改变。在这样做之前,你应该了解flash可以做什么,以及web架构,特别是服务器/客户端编程。嗯,首先我是一个安全人员,所以我想我知道的足够多,可以说,flash是一个客户端,必须下载到客户端的机器上,因此,如果分数是基于客户端在游戏中所做的事情,那么它的价值应该来自客户端。我唯一能想到的就是制作一个投票系统,它会让客户发送他当前的分数,如果分数变化很大,那么客户就是在作弊。如果你还有别的想法,请告诉我。编程不是一个障碍,问题是知道什么有效,什么无效。现在我更明白你们想要什么了。你需要一个握手机制。迷惑和严厉的程序来禁止作弊者也会有所帮助。不幸的是,禁止作弊不是一个选择。这不是一个游戏,你将能够实现很多,所以用户将能够再次注册不同的电子邮件地址和破坏记分板;模糊处理几乎就是我现在使用的,但它不会工作很长时间。因此,总结一下我的选择:它使协议尽可能模糊&添加一个握手&可能添加一些低cpu带宽使用率的轮询系统。我不知道如何在flash中做到这一点,-基本上flash客户端下载到客户端的机器上播放,因此它可以被反编译。这也意味着如果我不在客户端保护它,分数可以改变..在这样做之前

应该了解flash的功能和web架构,尤其是服务器/客户端编程。首先,我是一名安全人员,所以我想我知道的足够多,可以说flash是客户端,它必须下载到客户端的机器上,因此如果分数是基于客户端在游戏中所做的事情,那么他基本上可以控制,那么它的价值应该来自他。我唯一能想到的就是制作一个投票系统,它会让客户发送他当前的分数,如果分数变化很大,那么客户就是在作弊。如果你还有别的想法,请告诉我。编程不是一个障碍,问题是知道什么有效,什么无效。现在我更明白你们想要什么了。你需要一个握手机制。迷惑和严厉的程序来禁止作弊者也会有所帮助。不幸的是,禁止作弊不是一个选择。这不是一个游戏,你将能够实现很多,所以用户将能够再次注册不同的电子邮件地址和破坏记分板;模糊处理几乎就是我现在使用的,但它不会工作很长时间。因此,总结一下我的选择:它使协议尽可能模糊&添加握手&可能添加一些低cpu带宽使用率的轮询系统。这可能是唯一可行的解决方案,谢谢。它对我的游戏不起作用,但至少是有意义的。问题仍然是:如果有人对重播文件的构建方式进行反向工程,他们可能会伪造一个文件来做不可能的事情或做任何必要的事情来获得更高的分数。没错,它还允许重播攻击等,需要一些返工来存储所有以前的游戏,添加一些关于谁玩了什么游戏的分析。。。。但这不是我玩的那种游戏,所以我甚至没有考虑制作它的可能性。这可能是唯一有效的解决方案,谢谢。它对我的游戏不起作用,但至少是有意义的。问题仍然是:如果有人对重播文件的构建方式进行反向工程,他们可能会伪造一个文件来做不可能的事情或做任何必要的事情来获得更高的分数。没错,它还允许重播攻击等,需要一些返工来存储所有以前的游戏,添加一些关于谁玩了什么游戏的分析。。。。但这不是我玩的那种游戏,所以我甚至没有考虑制作它的可能性。这和散列一样糟糕:-如果反编译/篡改结果,作弊再次是可能的。是的,理论上作弊是可能的,但由于随机填充,必须设置一个应用程序来模拟游戏的行为,不要只计算散列。哦,不,你搞错了——一旦我做了10秒的反编译工作,你就会确切地知道协议是如何工作的——也许需要几个小时来找出公式,但它们永远都在那里。所以你可以模仿协议,而不是游戏。每个有空闲时间/几乎没有编程知识的人都可以轻松完成我指的是游戏的行为,即如何以及何时连接到服务器,而不是游戏引擎。诚然,编程几小时就足够了——仍然比一个简单的散列值好得多,你可以轻易伪造。没有绝对的安全性,一旦你让客户机连接到你的服务器——有足够的技术知识、时间和决心的人最终会发现一个漏洞。不过,你可以提高一些标准——当目标只是修改高分列表时,几个小时似乎很长。。AES是128,DES是56,甚至MD5也足够了。。因此,对分数的填充值进行散列在我看来就像用从服务器获得的任何密钥对其进行加密一样。。其实都一样。散列函数是单向函数,因此在不知道实际散列内容的情况下伪造它们会花费相当长的时间,这与在没有密码的情况下解密AES是一样的。当然,我可以通过散列一个散列来让它变得更加模糊,等等:这和散列一样糟糕:-如果反编译/篡改结果,作弊再次成为可能。是的,理论上作弊是可能的,但由于随机填充,人们必须设置一个应用程序来模仿游戏的行为,不要只计算散列。哦,不,你搞错了——一旦我做了10秒的反编译工作,你就会确切地知道协议是如何工作的——也许需要几个小时来找出公式,但它们永远都在那里。所以你可以模仿协议,而不是游戏。每个有空闲时间/几乎没有编程知识的人都可以轻松完成我指的是游戏的行为,即如何以及何时连接到服务器,而不是游戏引擎。诚然,编程几小时就足够了——仍然比一个简单的散列值好得多,你可以轻易伪造。没有绝对的安全性,一旦你让客户机连接到你的服务器——有足够的技术知识、时间和决心的人最终会发现一个漏洞。不过,你可以提高一些标准——当目标只是m的时候,几个小时似乎很长
修改高分列表。“简单”sha1是256位。。AES是128,DES是56,甚至MD5也足够了。。因此,对分数的填充值进行散列在我看来就像用从服务器获得的任何密钥对其进行加密一样。。其实都一样。散列函数是单向函数,因此在不知道实际散列内容的情况下伪造它们会花费相当长的时间,这与在没有密码的情况下解密AES是一样的。当然,我可以通过散列一个hash/etc使其更加模糊: