Php 防止人们使用修改过的本地swf

Php 防止人们使用修改过的本地swf,php,flash,Php,Flash,例如,我有一个swf文件(原始),它加载到一个页面:www.mysite.com/blablabla.swf 有些人使用诸如“charles proxy”之类的软件加载修改后的本地swf来作弊 我想阻止人们使用修改过的本地swf 你认为这个代码能解决这个问题吗 1) 在htaccess中创建一个条件:/blabla.swf显示blabla.php blabla.php: header("Cache-Control: no-cache, must-revalidate, no-store\nPra

例如,我有一个
swf
文件(原始),它加载到一个页面:www.mysite.com/blablabla.swf

有些人使用诸如“charles proxy”之类的软件加载修改后的本地swf来作弊

我想阻止人们使用修改过的本地
swf

你认为这个代码能解决这个问题吗

1) 在htaccess中创建一个条件:
/blabla.swf
显示
blabla.php

blabla.php:

header("Cache-Control: no-cache, must-revalidate, no-store\nPragma: no-cache\n");
header("Content-type: application/x-shockwave-flash");
readfile("blabla_secure.swf");

你仍然可以像以前一样代理这个问题。用户通过查看自己与服务器之间的通信,并根据自己的意愿修改值,即使不修改swf,也可能进行欺骗。最终,如果您必须信任客户的输入,那么客户可能会找到作弊的方法


在这个专门针对flash和HighScore的线程中有一些很好的答案,但它们也适用于其他用例:

对于所描述的设置,您应该采取两个步骤来确保客户机-服务器体系结构的完整性

步骤1:保护SWF。使用类似于SecureSWF()的工具,确保他们无法对其进行反编译和修改

步骤2:加密/保护通信协议。每个客户端->服务器消息应包含:

  • 客户端id:应用程序启动时客户端生成的随机字符串,自第一条消息握手后不应更改
  • 会话id:浏览器的ssid,或者更好的是,服务器应该在握手时生成一个ssid,在握手后不应该更改
  • 时间戳计数,您需要为每条消息增加一个字段
  • 签名,重要字段的MD5SHA1散列或(更好)整个消息
另外,最好添加一个salt(),它不是与消息一起发送的,也不是以简单的形式存储的(SecureSWF也提供字符串加密,或者您也可以立即构造秘密数据,然后将其处理掉,这样它就不会出现在内存中以捕获它)

然后,生成消息签名的AS3部分应使用步骤1进行严重混淆。这些操作背后的主要思想是创建一个不可反向工程的签名算法来合成服务器可以信任的消息:对应对客户端id+会话id将让服务器控制客户端的流,正确的签名意味着当消息本身由正版客户端生成时,消息中没有字段损坏


当然,从来没有100%的保证,但是上面的步骤会增加手工破解的难度,那些只知道如何使用Charles和反编译器的人永远不会有足够的知识和技能来破解。此外,黑客入侵也不能自动进行。此外,更改salt/算法/模糊处理只需几分钟,而解密需要大量的技能和知识,以及数小时或数天的时间。

如果您尝试,会发生什么?