所以我有这个完全在客户端运行的游戏。除了下载初始脚本来玩游戏之外,没有任何服务器交互。无论如何,在游戏结束时,我希望客户端将应该在服务器数据库中更新的分数发回给我。现在我已经开始接受这样一个事实,即在地球上我无法向黑客隐藏它并发送未更改的分数。但我想知道我可以修改整个过程到什么级别,黑客操纵正在发送的数据实际上变得非常不可行。我肯定不希望从客户端计算机以纯文本形式发送乐谱,也不希望我的服务器执行复杂的解密算法。什么是最好的方法来实现相当大的安全性,每个 tom dick 和 harry 都不会破解分数......我希望有人可以提供一个很好的小方法,我可以继续...... :) 谢谢
所以我的理想结果应该是 -> 信任来自不受信任方(玩家)的(分数)计算结果!
-编辑-
有人告诉我一些关于在图片获取请求中隐藏数据的事情。比如,我正在 Canvas (html5) 上实现这个游戏。所以他要求我在比赛结束时从我的服务器上获取一张比赛结束图像,他们要求应该包含散列得分。我不太了解完整的过程,但如果你能解释一下,我会很高兴! :)
coda^ so you can mask the requests nicely
shouvik how do I do it!?
coda^ you can compose the checksum you want to submit. like 12312312a12313a232 is your md5 which contains the score. bring in an asset into the canvas like
coda^ server.com/images/md5_hash_of_score/congratulations.png
coda^ which you can rewrite server side via htaccess
最佳答案
您似乎已经知道这一点,但只是强调一下; 你无法阻止某人这样做;你只能让它变得尽可能难!
假设您当前将分数提交为:
/submit_score.php?score=5
在 Firebug 中观看的人可以很容易地区分提交乐谱的位置,并对其进行更改。 submit_score.php 给出了它,参数名称也是如此。分数是一个容易区分的整数。
/interaction.php?score=5/interaction.php?a=5用户越来越难弄清楚发生了什么。
现在您可以让分数更难(再次强调,更难,并非不可能)改变。首先,您可以对其进行加密(显然您以后需要能够对其进行解密)。
你说出来,你就做。所以你现在有 interaction.php?a=e。
接下来您可以用其他东西对分数进行哈希处理。发送带有分数的哈希值,并在服务器上重新计算它。例如,md5() 带有随机字符串的分数,并在请求中发送分数(编码)、字符串和哈希值:
/interaction.php?a=e&str=abcde&hash=123456789abcefbc
当请求到达服务器时,执行:
if (md5($_GET['a'] . $_GET['str']) !== $_GET['hash']) exit;
显然,人们可以(相对)轻松地浏览您的 JavaScript 代码并查看发生了什么;所以让他们在那里更难。缩小和混淆代码。
如果你让某人觉得困难,他们会尝试理解你的 JavaScript,尝试使用 Firebug,但不理解发生了什么,也不会打扰;为了在游戏中获得一些额外积分。
关于javascript - 将游戏分数从客户端更新到服务器数据库的最安全方法? Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4733175/
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除
在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?
我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("
require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame
修改(澄清问题)我已经花了几天时间试图弄清楚如何从Facebook游戏中抓取特定信息;但是,我遇到了一堵又一堵砖墙。据我所知,主要问题如下。我可以使用Chrome的检查元素工具手动查找我需要的html-它似乎位于iframe中。但是,当我尝试抓取该iframe时,它是空的(属性除外):如果我使用浏览器的“查看页面源代码”工具,这与我看到的输出相同。我不明白为什么我看不到iframe中的数据。答案不是它是由AJAX之后添加的。(我知道这既是因为“查看页面源代码”可以读取Ajax添加的数据,也是因为我有b/c我一直等到我可以看到数据页面之后才抓取它,但它仍然不存在)。发生这种情况是因为
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的