[文章作者:陈臻 本文版本:v1.2 最后修改:2009.4.28 转载请注明原文链接:http://www.54chen.com/c/520 ]
在开放ID投票的应用中,如果投票后的奖品丰富,必然会招来各种各样的刷票机和人肉刷票,如何防止刷票,也就成了大家头疼的事情。
一般情况下,大家都会使用限制IP的策略,同时加上Cookies,但是日常都刷票机都能解决掉这两种方法,下面介绍的是一种比较少用一些的方法,就是利用flash的share object机制来防止刷票,这只能增加刷票的成本,而不能完全规避这种行为,要做到没人刷票而又开放,基本上只能靠--人。
下面请看flex代码,内附注释(xx.mxml):
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()" applicationComplete="onBrowseClick()" width="190" height="54" horizontalAlign="center" verticalAlign="middle" alpha="0.44" backgroundGradientAlphas="[0.0, 0.0]" backgroundGradientColors="[#ffffff, #ffffff]">
<mx:Script>
<![CDATA[
import flash.external.*;
import com.cc.StringManipulator;
import com.cc.Md5;
import mx.controls.Alert;
[Bindable]
public var myTime:String;
[Bindable]
public var myUid:String;
[Bindable]
public var myHash:String;private function init():void{//初始化 通过下面三个html传过来的参数进行下一步的计算
myTime = Application.application.parameters.t;
myUid = Application.application.parameters.u;
myHash = Application.application.parameters.h;
}
private function onBrowseClick():void{
var hk123:SharedObject = SharedObject.getLocal( "hk123" );
var temp:String = hk123.data[myUid];
var hashCode2:String = '';
hk123.data[myUid]=myTime;
hk123.data.dt = myTime;
hk123.flush();
hashCode2 = Md5.calculate('caoninengdudaozelizhenxian' + myUid + myHash);//这一行自己加了个密钥串和传来的用户ID和服务器串进行md5 如果能破解flash到这里 这个基本上就破了
ExternalInterface.call("browse",temp,hashCode2);//提交到html里的js function->browse,通过这个js把form提交给服务器端,去计算整个串是不是对的或者是不是使用过的,也就可以限制重复了
}
]]>
</mx:Script>
</mx:Application>
PS:
有许多朋友来mail问我js部分,特地加一下,其实就是一个简单的function,里面怎么写都行,只要把参数传到服务器端就成:
function browse(a,b){form.action += '&s1=a&s2=b';form.submit();//其实用ajax传也不失为一个好办法}
这就把一个form提出去了,你当然还可以用ajax什么的直接发那两个值去服务器端就是了。
END
原创文章如转载,请注明:转载自五四陈科学院[http://www.54chen.com]
本文链接: http://www.54chen.com/web-ral/%e5%8e%9f%e5%88%9b%e6%89%93%e5%80%92%e6%8a%95%e7%a5%a8%e4%bd%9c%e5%bc%8a%ef%bc%8c%e5%b7%a7%e7%94%a8flex%e9%98%b2%e5%88%b7%e7%a5%a8.html

"caoninengdudaozelizhenxian"-"草,你能读到这里阵线" 有点搞
我想表达的是,你能读到这里有点闲。。。哈哈
恩,不错,这个id,我去年就想到啦
瓜瓜 其实这是我去年的时候在群里讲过。。。
代码都是去年的。。。
com.cc.Md5 去哪里下?
就是个md5的as类 网上搜一下
神速
哈哈 那段拼音太幽默了~~~~~~~
如果人家注册新账号呢?
如果用抓包工具抓到你的flash 和js所post的value,然后自己构造发送到服务器,是不是也就没辙了?