我目前正在与一位 friend 合作开发一款 Flash 游戏。 当玩家完成游戏时,他想要将分数插入数据库。 他将本教程用于 Flash - http://www.tizag.com/flashTutorial/flashforms.php . 他制作的 swf 效果很好 - 它发布了数据。问题是我可以看到来自 Firebug 的请求。这就带来了另一个问题——任何更高级的用户都可以在不玩游戏的情况下插入自己的分数……
那么有没有办法隐藏flash游戏的请求呢? 解决这个问题的正确方法是什么?
最佳答案
不,实际上没有办法隐藏发出的请求。这是不可能的,如果它在网络浏览器中运行,不仅 Firebug 或实时 HTTP header 可以拦截它,我还可以加载 Wireshark 并找到所有传入和传出的流量并进行分析。您需要的是一种加密或混淆方法。例如,取他们的分数,base64_encode() 它,然后取当前时间,反转它(并且可能在它的末尾添加一个键),然后取它的 MD5。将所有三项信息提交给服务器,如果时间超过 5 秒,他们可能编辑了请求并发送了一个错误的请求。检查时间的有效性,方法是反转它(如果你使用过,然后将 key 添加到它)并获取 MD5 并确保它们匹配。当然,你可以运行一些复杂的加密算法,但最终没有意义:
没有万无一失的方法来解决这个问题。我曾经在逆向工程领域工作。我可以告诉你,我可以编辑任何 Flash 游戏中的任何值。因此,虽然提交分数可能有点安全,但我可以反编译你的游戏并查看代码,看看你做了什么来混淆分数提交。或者,更简单的方法是,我可以只编辑保持分数的值,时间可能不到 60 秒。 Adobe Flash Player 将变量存储在内存中,这就是弱点所在,我可以轻松地在内存中编辑这些变量和值。
而且,如果您正试图应对防止逆向工程的挑战,我建议您就此止步,并希望没有像我这样的人在玩您的游戏。已经做了很多很多尝试来防止逆向工程,让我这样说:混淆和“安全”只会让诚实的人拒之门外。这对于现实世界和编程都是如此。真正想要利用系统并具备这样做技能的人,这很容易。它只会防止偶然的黑客和作弊者作弊。安全性和规避它的方法之间的平衡永远接近平衡。
关于php - 隐藏 POST/GET 请求 - Flask 和 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6278723/
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
我知道您通常应该在Rails中使用新建/创建和编辑/更新之间的链接,但我有一个情况需要其他东西。无论如何我可以实现同样的连接吗?我有一个模型表单,我希望它发布数据(类似于新View如何发布到创建操作)。这是我的表格prohibitedthisjobfrombeingsaved: 最佳答案 使用:url选项。=form_for@job,:url=>company_path,:html=>{:method=>:post/:put} 关于ruby-on-rails-rails:Howtomak
在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这
我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
我试图在我的网站上实现使用Facebook登录功能,但在尝试从Facebook取回访问token时遇到障碍。这是我的代码:ifparams[:error_reason]=="user_denied"thenflash[:error]="TologinwithFacebook,youmustclick'Allow'toletthesiteaccessyourinformation"redirect_to:loginelsifparams[:code]thentoken_uri=URI.parse("https://graph.facebook.com/oauth/access_token
我是Ruby的新手。我试过查看在线文档,但没有找到任何有效的方法。我想在以下HTTP请求botget_response()和get()中包含一个用户代理。有人可以指出我正确的方向吗?#PreliminarycheckthatProggitisupcheck=Net::HTTP.get_response(URI.parse(proggit_url))ifcheck.code!="200"puts"ErrorcontactingProggit"returnend#Attempttogetthejsonresponse=Net::HTTP.get(URI.parse(proggit_url)