Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.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
C# 如何在asp.net中发布表单时检查数据是否被篡改_C#_Asp.net_Encryption - Fatal编程技术网

C# 如何在asp.net中发布表单时检查数据是否被篡改

C# 如何在asp.net中发布表单时检查数据是否被篡改,c#,asp.net,encryption,C#,Asp.net,Encryption,我有一张提交比赛分数的表格。有没有办法检查在提交过程中游戏分数是否被篡改。我使用的是POST方法,对于GET方法,我们可以使用HASH,但是我正在寻找POST方法,你说的篡改是什么意思?您是否在计算客户端代码中的分数并将其发送回服务器?如果是这样的话,那就没有办法检查了。基本原则是永远不要隐式信任来自客户机的任何东西。使用服务器端逻辑验证所有内容。不确定使用什么方法来散列GET参数,但您可能可以重新使用该方法来散列POST参数。Xavier您知道关于如何在POST上使用散列的任何片段吗是的,但一

我有一张提交比赛分数的表格。有没有办法检查在提交过程中游戏分数是否被篡改。我使用的是POST方法,对于GET方法,我们可以使用HASH,但是我正在寻找POST方法,你说的篡改是什么意思?您是否在计算客户端代码中的分数并将其发送回服务器?如果是这样的话,那就没有办法检查了。基本原则是永远不要隐式信任来自客户机的任何东西。使用服务器端逻辑验证所有内容。

不确定使用什么方法来散列GET参数,但您可能可以重新使用该方法来散列POST参数。Xavier您知道关于如何在POST上使用散列的任何片段吗是的,但一般问题相当有趣。如果游戏在客户端本地运行,服务器如何验证分数?我真的很想知道带有在线记分板的游戏是如何做到这一点的;他们中的许多人似乎是防篡改的,因为记分板上没有作弊者。我的游戏运行在flash上,游戏结束后,用户将被允许提交他们的分数。所以我在flash中使用POST方法发送带有游戏分数的数据。因此,我仍然对如何在存储到数据库之前保护数据传输感到困惑啊,我更清楚地看到了你现在所说的。这确实是一个有趣的问题,但我还没有机会遇到。我今天会考虑一下。闪存代码可以被反汇编吗?也就是说,可以从中提取内部常量吗?如果不是这样,那么您可能会得到某种内部散列,它将发送的数据与时间戳和一些已知(内部常量)种子组合在一起,并与POST一起发送。在服务器上,您将使用数据包含的时间戳和常量对数据进行散列,以查看它是否与提供的散列匹配。请注意,这更像是一种“通过模糊性实现安全”的模型,我通常不提倡这种模型。但对于网络游戏来说,它往往归结为从相对简单的东西开始,看看是否有对更复杂和安全的东西的需求,然后在游戏和任何认为值得打这场仗的骗子之间展开一场战斗。也有一些非技术性的方法来阻止作弊(禁止,游戏中的社交污名,一个人们不想作弊的足够吸引人的游戏,等等)