asp.net怎么防止刷票呢?

问题描述

这是JQ代码:$(function(){$('#btn_vote').click(function(){varradios=$('input:radio[name="id"]:checked').val();if(radios==null){alert("请选择一个");returnfalse;}else{//alert(radios);$.post("Ajax/LoginHandler.ashx",{"action":"vote","radio":$('input:radio[name="id"]:checked').val()},function(data,status){if(status!="success"){return;}elseif(data=="success"){alert("投票成功");}})}});});

复制代码这个是处理的代码,如何判断一天只能投票一次呢?比如说IP+cookies只要能实现投票了没有做过任何设置再投的话能实现就可以了,不管安全不安全if(action=="vote"){stringvoteitems=context.Request["radio"].ToString();using(vardb=newmyExpressDataContext()){context.Response.Write("success");SurveyTablesu=newSurveyTable();if(voteitems=="25"){su.SurveyContent="非常好";su.SurveryTime=DateTime.Now;db.SurveyTable.InsertOnSubmit(su);db.SubmitChanges();}elseif(voteitems=="26"){su.SurveyContent="比较好";su.SurveryTime=DateTime.Now;db.SurveyTable.InsertOnSubmit(su);db.SubmitChanges();}elseif(voteitems=="27"){su.SurveyContent="一般般";su.SurveryTime=DateTime.Now;db.SurveyTable.InsertOnSubmit(su);db.SubmitChanges();}elseif(voteitems=="28"){su.SurveyContent="较差";su.SurveryTime=DateTime.Now;db.SurveyTable.InsertOnSubmit(su);db.SubmitChanges();}}}

复制代码

解决方案

解决方案二:
验证码+判断IP。
解决方案三:
你记录投票者的ip加投票时间,并且在浏览器客户端上记录cookie,每次有投票者进行投票的时候都进行判断检测
解决方案四:
验证码然后COOKIE最严格的:记IP
解决方案五:
说cookie和IP的,对你们表示无语,cookie随便都能禁掉,ip随便都能换掉。
解决方案六:
引用4楼xishuiyue的回复:

说cookie和IP的,对你们表示无语,cookie随便都能禁掉,ip随便都能换掉。

按照你这样说那什么都不能防止了....就算不让登陆系统我还可以入侵数数据库执行update呢这么玩有意思么....
解决方案七:
记录硬盘序列号+CPU号
解决方案八:
难道不是发短信验证码么?
解决方案九:
网上看到了一个说法,不知道灵不灵,楼主可以过去看看,据说是获取对方的mac地址的
解决方案十:
引用6楼nacheng的回复:

记录硬盘序列号+CPU号

什么黑科技这么厉害,还能取到网页用户的硬件信息,火星的吗,发来分享下
解决方案十一:
引用8楼showyusy的回复:

网上看到了一个说法,不知道灵不灵,楼主可以过去看看,据说是获取对方的mac地址的

代码虽然没看但是我知道一定不行..那玩意只针对局域网有效...http就算你是tcp/ip都不能获取client的mac的...
解决方案十二:
最基本的做法就是使用cookie记录之前的登录等等信息,然后有了这个信息只后才能投票。有人说“用户可以禁用cookie”。但是禁用它,有几个网站还会让用户能继续投票呢?
解决方案十三:
引用7楼Mockqi的回复:

难道不是发短信验证码么?

呵呵,那还不如直接发个短信“您投给谁?回复A投刘德华,回复B偷葛优”,直接用短信投票。
解决方案十四:
关于“ip随便都能换掉”的说法,这个也相当可疑。这说法是指互联网公网IP吗?你不会是说局域网IP吧?公网IP改变起来其实比较麻烦。就算你使用联通之类路由器的不断重新拨号,你用的IP也不会总是新的IP。局域网IP跟人家网站检测的IP没有什么关系,你随便怎么换,你的公网IP也不一定就能改变。
解决方案十五:
引用13楼sp1234的回复:

关于“ip随便都能换掉”的说法,这个也相当可疑。这说法是指互联网公网IP吗?你不会是说局域网IP吧?公网IP改变起来其实比较麻烦。就算你使用联通之类路由器的不断重新拨号,你用的IP也不会总是新的IP。局域网IP跟人家网站检测的IP没有什么关系,你随便怎么换,你的公网IP也不一定就能改变。

自动更换IP投票软件现成的
解决方案:
html5有个叫做storage的东西~
解决方案:
我不推销什么软件,不发软文。针对lz的问题说“自动更换IP”的问题。有人听说“放高利贷的公司很赚钱啊”,于是就说“所有的学生都可以放高利贷”,这肯定不现实。同样地,如果你现在想推销一个确实做得到一个号称“每秒30个IP,连续7天都不带重复”的所谓“自动更换IP软件”,而不是骗人的或者木马病毒,那么也不是我要跟lz讨论的范围。因为如果以这个东西来给csdn上的技术人员做为通用的规范做法的参考,就是抬杠了。
解决方案:
引用15楼zjgdtl的回复:

html5有个叫做storage的东西~

基本上,对于这个帖子的问题,我们可以用cookie来代替它。虽然不是同一个东西,但是在这里(的逻辑设计上)其实是同一类。
解决方案:
引用4楼xishuiyue的回复:

说cookie和IP的,对你们表示无语,cookie随便都能禁掉,ip随便都能换掉。

禁掉cookie,不能投票。随便换掉ip,不是你想像的那么随便。
解决方案:
引用18楼sp1234的回复:

Quote: 引用4楼xishuiyue的回复:
说cookie和IP的,对你们表示无语,cookie随便都能禁掉,ip随便都能换掉。

禁掉cookie,不能投票。随便换掉ip,不是你想像的那么随便。

cookie的话貌似可以用post的方式,先在网站上面截获cookie内容,然后自己去post一个一样的不就可以了么
解决方案:
验证码+ip
解决方案:
引用19楼zjgdtl的回复:

Quote: 引用18楼sp1234的回复:
Quote: 引用4楼xishuiyue的回复:
说cookie和IP的,对你们表示无语,cookie随便都能禁掉,ip随便都能换掉。

禁掉cookie,不能投票。随便换掉ip,不是你想像的那么随便。

cookie的话貌似可以用post的方式,先在网站上面截获cookie内容,然后自己去post一个一样的不就可以了么

如果是一样的,已经投票过了,就不能再次投票除非你是去抢夺人家还没有投票过的电脑的投票权
解决方案:
复杂的高难度的验证码,防止机器识别
解决方案:
其实最简单也最可靠的办法是必须用用户名登录才能投票,每个用户只能投票一次然后注册用户的地方做限制,比如绑定邮箱,绑定手机号等等当然是要邮箱或短信验证的,不能瞎填也允许注册
解决方案:
使用ip。在服务器那边把客户端的ip记录下来放到数据库里每晚12点自动清理数据库的ip投票表。当然面对代理这个办法还是有点不好。但是使用cookie我还是不认可。主要cookie是具体怎么做的?HttpWebRequest完全可以模拟请求。
解决方案:
如何防止重复投票示例//从txt文件中读取投票数量//<paramname="P_str_path">要读取的txt文件的路径及名称</param>//<returns>返回一个int类型的值,用来记录投票数量</returns>publicstaticintreadCount(stringP_str_path){intP_int_count=0;StreamReaderstreamread;streamread=File.OpenText(P_str_path);while(streamread.Peek()!=-1){P_int_count=int.Parse(streamread.ReadLine());}streamread.Close();returnP_int_count;}//codego.net/tags/11/1///写入投票数量//<paramname="P_str_path">要操作的txt文件的路径及名称</param>publicstaticvoidaddCount(stringP_str_path){intP_int_count=readCount(P_str_path);P_int_count+=1;//将数据记录写入文件StreamWriterstreamwriter=newStreamWriter(P_str_path,false);streamwriter.WriteLine(P_int_count);streamwriter.Close();}//投票事件按钮进行投票protectedvoidImageButton1_Click(objectsender,ImageClickEventArgse){stringP_str_IP=Request.UserHostAddress.ToString();HttpCookieoldCookie=Request.Cookies["userIP"];if(oldCookie==null){intflag=RadioButtonList1.SelectedIndex;switch(flag){case0:addCount(Server.MapPath("result1.txt"));break;case1:addCount(Server.MapPath("result2.txt"));break;case2:addCount(Server.MapPath("result3.txt"));break;}ClientScript.RegisterStartupScript(this.GetType(),"","alert('投票成功,谢谢您的参与!');",true);HttpCookienewCookie=newHttpCookie("userIP");//定义新的Cookie对象newCookie.Expires=DateTime.MaxValue;//添加新的Cookie变量IPaddress,值为P_str_IPnewCookie.Values.Add("IPaddress",P_str_IP);Response.AppendCookie(newCookie);//将变量写入Cookie文件中}else{stringP_str_oldIP=oldCookie.Values["IPaddress"];if(P_str_IP.Trim()==P_str_oldIP.Trim()){ClientScript.RegisterStartupScript(this.GetType(),"","alert('一个IP地址只能投一次票,谢谢您的参与!');",true);}else{HttpCookienewCookie=newHttpCookie("userIP");newCookie.Values.Add("IPaddress",P_str_IP);newCookie.Expires=DateTime.MaxValue;Response.AppendCookie(newCookie);intrflag=RadioButtonList1.SelectedIndex;switch(rflag){case0:addCount("result1.txt");break;case1:addCount("result2.txt");break;case2:addCount("result3.txt");break;}ClientScript.RegisterStartupScript(this.GetType(),"","alert('投票成功,谢谢您的参与!');",true);}}}//记录投票%比protectedstringM_str_rate1;protectedstringM_str_rate2;protectedstringM_str_rate3;protectedintP_int_count1;protectedintP_int_count2;protectedintP_int_count3;//加载投票显示总投票数protectedvoidPage_Load(objectsender,EventArgse){P_int_count1=readCount(Server.MapPath("result1.txt"));P_int_count2=readCount(Server.MapPath("result2.txt"));P_int_count3=readCount(Server.MapPath("result3.txt"));intP_int_count=P_int_count1+P_int_count2+P_int_count3;if(P_int_count==0){Response.Write("<script>alert('还没有人投过票!')</script>");lblresult.Text="共有0人参与投票";}else{M_str_rate1=(Convert.ToDouble(P_int_count1)*100/Convert.ToDouble(P_int_count)).ToString("0.00")+"%";M_str_rate2=(Convert.ToDouble(P_int_count2)*100/Convert.ToDouble(P_int_count)).ToString("0.00")+"%";M_str_rate3=(Convert.ToDouble(P_int_count3)*100/Convert.ToDouble(P_int_count)).ToString("0.00")+"%";lblresult.Text="共有"+P_int_count.ToString()+"人参与投票";}}
解决方案:
引用24楼qzyf1992的回复:

但是使用cookie我还是不认可。主要cookie是具体怎么做的?HttpWebRequest完全可以模拟请求。

只有登录到网站上的用户,并且经过了几个导航页面浏览才进入投票网页,才能投票。否则就没有投票资格。
解决方案:
引用19楼zjgdtl的回复:

cookie的话貌似可以用post的方式,先在网站上面截获cookie内容,然后自己去post一个一样的不就可以了么

既然已经投过了,还怎么重复投票啊?
解决方案:
既然是虚幻的互联网,原则上没有什么“绝对可防止的”事情。更何况现在还有好多冒充自己是独一无二的黑客团伙来卖软件的,有些人甚至说自己的技术是军方都很想得到的先进技术。有些投票软件程序员可能直接制造10万个“假票”。但是一般来说,我们讨论应用程序普遍认可的技术,其实也就那么很简单的事情。

时间: 2025-01-30 00:11:29

asp.net怎么防止刷票呢?的相关文章

asp.net做一个无登录的投票网站用什么作为唯一标识来防止刷票

问题描述 asp.net做一个无登录的投票网站用什么作为唯一标识来防止刷票 asp.net做一个无登录的投票网站用什么作为唯一标识来防止刷票,还有手机端的用什么来防止刷票,手机端只是网页不是app 解决方案 自己顶一下,高手快来呀

制作一个网页刷票软件(有验证码)遇到问题

问题描述 http://www.bsdj.cn/21_syds_list1.asp这是网页地址,需要选择5个才能投票.我需要投贴心人(顾村村),另外四个锁定票数最高的四个.我个人思路如下:第一.通过request获取验证码图片第二.解析验证码第三.赋值及诶出来的验证码数字第四.添加一个submit事件我是直接将网页源代码下载下来,然后直接在后面添加了submit事件,但是本地打开就显示无法连接.望大神相助,教我如何完成该种带有简单验证码的网页刷票.PS:验证码图片解析代码使用http://www

简单的刷票系统(突破IP限制进行投票) (转)

前言 相信大家平时肯定会收到朋友发来的链接,打开一看,哦,需要投票.投完票后弹出一个页面(恭喜您,您已经投票成功),再次点击的时候发现,啊哈,您的IP(***.***.***.***)已经投过票了,不能重复投票.这时候,我们可能会想,能不能突破ip地址的限制进行刷票呢?有了这样的想法,那就去做吧,下面我将介绍我这个简单的刷票系统,仅供有需求的园友们参考. 1.系统设计 系统主要实现的是突破IP限制进行刷票,其中,由IP采集模块负责从互联网上爬取代理IP,放入阻塞队列,该任务会定期执行.之后由投票

ASP.NET验证码(3种)_实用技巧

日常生活中我们在使用网站时都会遇到验证码,大家有没有想过为什么要使用验证码? 其实验证码的作用就是防止恶意破解密码.刷票.论坛灌水.刷页.有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试.今天就跟大家分享ASP.NET的三种验证码. 1.GSC_WebControlLibrary 这是在网上找到的一个控件,非常好用.但是效果不是特别好(见下图. )虽然容易使用,所有的属性都可以像控件一样设置,但是可用性不太高.用户不能自定义,而且看起来这个验证码效果不太好. 效果:

固定表头-在ASP.NET页面中,固定DATAGRID表头出现的问题

问题描述 在ASP.NET页面中,固定DATAGRID表头出现的问题 使用DIV标签加js纯页面固定表头,实际上就是将表头获取出来填充到一个DIV中,问题就是如何将表头和表中的内容对齐,特别是在表中数据动态改变列宽不固定的时候

学ASP动态网页必备:IIS 错误代码

iis|错误|动态|网页     400 无法解析此请求.     401.1 未经授权:访问由于凭据无效被拒绝.     401.2 未经授权: 访问由于服务器配置倾向使用替代身份验证方法而被拒绝.     401.3 未经授权:访问由于 ACL 对所请求资源的设置被拒绝.     401.4 未经授权:Web 服务器上安装的筛选器授权失败.     401.5 未经授权:ISAPI/CGI 应用程序授权失败.     401.7 未经授权:由于 Web 服务器上的 URL 授权策略而拒绝访问

Oracle大文本在ASP中存取问题的解决

oracle|解决|问题 在我开发BS结构程序中,由于经常需要在ORACLE中处理一些容量较大的文本数据,所以经过反复测试终于用ASP成功解决了大文本数据在ORACLE下存取问题. 一.运行环境: 1.Microsoft Windows 2000 Server + IIS 5.0 2.Oracle8i中文标准版 二.建立数据表: CREATE TABLE SYSTEM.TEST( BLOB LONG, ID NUMBER) / 三.源程序: 1.数据存入程序:test.asp <% '表单提交处

ASP中一个字符串处理类(VBScript)

vbscript|字符串 这个类是用于处理字符串的,是老外写的,我把里面的功能和参数加了说明 使用方法: =============== test.asp================ <!--#include file="StringOperations.asp"--> <%dim strset str = New StringOperations test = str.toCharArray("check this out") respons

asp 用存储过程实现数据分页

存储过程|分页|数据 一.创建表 tiku_koushi if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tiku_koushi]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[tiku_koushi]GO CREATE TABLE [dbo].[tiku_koushi] ([id] [int] IDENTITY (1, 1)