---_-
1
loading 2015-01-14 15:39:20 +08:00 via Android
ip,浏览器指纹
|
2
vwhenx2 2015-01-14 15:40:51 +08:00
验证码
|
3
jjit 2015-01-14 15:41:24 +08:00
手机验证码?
|
4
ETiV 2015-01-14 15:53:40 +08:00 via iPhone
记录投票时的时间和IP;
保留第一手证据 投票期间正常展示数据; 这样刷票的自己会认为刷票是成功了的 统计结果的时候再处理刷票的; 当然少不了“我拥有最终解释权” |
5
Daniel65536 2015-01-14 15:58:00 +08:00 via iPhone 2
hashcash
|
6
Had 2015-01-14 16:01:44 +08:00
|
7
gamexg 2015-01-14 18:07:48 +08:00
|
10
typcn 2015-01-14 19:20:17 +08:00
表单数据 AES 加密起来,密钥啥的都随机产生,然后把页面上的 JS 混淆一下,顺便把 CryptoJS 的库都混淆全混一块,大大增加解密难度,第二天再换换算法
|
11
ETiV 2015-01-14 19:20:55 +08:00 via iPhone
|
13
imlewc OP js 获取mac地址 这种大家觉得有什么漏洞
|
16
imlewc OP |
19
quericy 2015-01-14 21:14:17 +08:00
复杂js计算限制用PC浏览器+flash cookie验证
|
20
takatost 2015-01-14 21:43:53 +08:00
浏览器指纹一般都是浏览器生成的,服务器无法校验正确性
如何保证用户不篡改验证串? |
22
imlewc OP |
23
NeoAtlantis 2015-01-15 11:06:02 +08:00
用hashcash不错,简单说就是要求一个特定的字符串,其散列后前n比特都是0.
这个字符串有特定要求的,比如既然是投票,字符串里面的资源名就要写你的ip、投票的内容和你的选项。还有生成日期,可以精确到分钟或者秒,以免过期的被重用。然后字符串结尾允许一些别的东西,用来产生满足要求的结果。 比如这样一个例子: 1:20:150115:vote-to-person1;219.150.32.132;v2ex.com::laZM06NobysDWlGk:0000000000000000000000AY/C (自己试下散列上面这个字符串看HEX结果) 比如n=20的时候,根据生日问题能估计需要平均2^10次计算才能找到一个这样的字符串。这就保证能产生这个字符串的平均进行了~1000次的SHA1计算。提高n可以大大减缓刷票的可能。 缺点是,越好的机器越容易刷,越烂的机器或者浏览器越难。而且js的SHA效率也不高。 |
24
exceloo 2015-01-15 11:07:03 +08:00
只有@ETiV 这种方法是有效的。关键在于“统计结果的时候再处理刷票的;”
如果一查到有人刷票就处理,你根本玩不过黑产。淘宝上1w个ip才2块钱... 验证码人工打码也便宜的很; 连手机验证码都有api,1毛接收1个。 |
25
intosec 2015-01-15 13:27:18 +08:00 via Android
那要是对面就是召集了一万多个人力,人肉投票,这种怎么破?
|
26
br00k 2015-01-15 17:51:15 +08:00
说到底只是增加刷票的成本而已。
|