今天看新闻 乐山的什么网上投票 被刷了2000多W张......
我就想起这个了
网页嵌入个小程序 用Socket协议和专门的投票服务器通信 (暂时咱不考虑性能问题)
我看他怎么伪造IP地址 用Hashmap做K-V  瞄了个咪的 我就不信控制不了他们
难道ServerSocket中客户端的IP地址都能伪造么?
如果不能  他还有啥作弊方法~用代理?
这我就没研究了 IE用代理 1.1.1.1  网页里的程序 通过socket连到服务器 也能是1.1.1.1??????
走的应该是最后网络的出口吧

解决方案 »

  1.   

    能用程序刷票,说明,服务端的程序,存在这方面的bug一般情况下,我们会采用几种机制,来防止某些人使用程序刷票。
    比如:
          1.使用图形化的验证码。图片中的数字字母,会被拉伸,背景也会做更改,增加程序破译的难度。
          2.会员投票次数限制。只有会员用户才能投票,并且只能投一票。
          3.重复IP地址的校验。同一IP地址,短时间内只能为一人投一票。第一种方法,一般都会被采用,但是,第二种和第三种,并不是一定都要采用的。
    第二种,使得投票活动不太方便,公开性降低了。 
    第三种,可能会丧失一部分票数,对程序投票的活动也会有可乘之机。最后,
    ServerSocket里面的IP地址,一般是无法伪造的。
    但是,网站投票,并不是这么简单的一件事情。
          1.投票的处理页面,肯定是动态页面,而非静态页面,对吧。
          2.动态页面里,你抓取到的客户端的IP地址,是HTTP中的Host地址还是TCP中客户端的IP地址?
          3.你使用HashMap保存IP以及投票信息,这不能算是错误的事情,但是,你忽略了一个问题:
              HashMap的size会随时间的推移而增多。
    我们知道,明星投票活动,等活动结束,一般每个明星总得有个几十万票吧?五个明星就肯定超过100W票了。
    你的HashMap存那么多数据,会使得 内存的使用效率 极大的降低,数据查询效率也可能会降低。