防止网上重复投票的方法
来源:asp之家 发布时间:2009-06-01 12:31:00
方法一:利用Cookies对象
因为Cookies对象把变量的值保存在浏览器客户端,所以可以根据Cookies保存的IsVoted的值来判断用户是否投过票。Cookies变量和Session变量一样是私有的,但是如果我们定义了Cookies变量的生存期限,则Cookies变量是公有的,凡是从同一台机器上登录的用户在规定的时间期限没有达到时,都无法投票,这在一定程度上也能防止反复投票。根据实际情况合理地设置Cookies变量的生存期限的长短,例如设定为10分钟,这样一台机器即使连续投票最多一天也只能投144张票。
此种方法的漏洞:在Windows 9x环境下,只要把 Windows\Cookies目录下所有*.txt文件删除,又可重复投票。
方法二:验证IP地址与登录时间
此方法首先利用 Request.ServerVariables(REMOTE_ADDR)取得用户的IP地址。在Web Server端建立一个标准的MDB类型的数据库,此数据库有一个表,该表只有两个字段:IP地址和登录时间。之所以设置登录时间这个字段,是考虑到拨号上网用户可能共用同一个IP地址,如果一个IP 地址只能投一次票,那么显然不合理。同时,我们还采用方法一同样的思想,必须每隔一个设定的时间段,同一个IP地址才能再次投票。
方法三:小范围调查
这种方法只适用于小范围调查,思想与方法三相同,只是把方法二中的 IP地址换成可以唯一代表用户的字段,如学生证号、工作证号等。这时建立的MDB数据库只包括两个字段:证件号码与IsVoted(其中IsVoted是逻辑型字段, TRUE表示已投过票,FALSE表示还未投票,在建库时所有记录的IsVoted的值都设为 FALSE)。在投票之前,要求先输入正确的证件号码,然后再判断IsVoted的值。
从方法一到方法三,安全性越来越高,防止重复连续投票功能越来越强,但是各种方法都有各自的局限性。在应用中,用户应根据实际情况选择合适的方法。如果小范围投票,方法三无疑是最好的;如果在Internet上投票,方法二是最好的。另外一点必须提及的是:虽然Application有保存变量的功能,但是我们没有用到。因为 Application变量是一个全局性变量,如果用Application把IsVoted设为TRUE,则任何用户都无法投票;如果用Application把IsVoted设为FALSE,则任何用户都可以投票,就没有任何防范功能了。
猜你喜欢
- asp之家注:也许很多人对网页设计中的,id和class和name的区别不是很清楚,好像觉得都可以使用,没什么不同。就我个人来讲,我的理解是
- 如果你经常浏览网页一定见过很多网站在form表单中的文本域(textarea)中添加了的背景图片,一般是使用网站的logo,我记得我最早注意
- 在软件项目实施的时候,数据导入一直是项目人员比较头疼的问题。其实,在SQL Server中集成了很多成批导入数据的方法。有些项目实施顾问头疼
- ActiveServerPages,ASP0126(0x80004005)-->找不到包含文件MicrosoftOLEDBProvid
- 作用:用ASP程序将页面中的电话号码生成图片格式。以下是引用片段:<% Call Com_CreatValidCode(Request
- 大家知道,Microsoft为了更好地预防恶意用户和攻击者的攻击,在默认情况下,没有将 IIS6.0 安装到 Windows Server
- 图片的间隙Q:我有一张大图片,把它切割后在Dreamweaver中进行拼接,可是总是有间隙,不知为什么?A:不知你是否把表格的边距、间距和边
- <html><head><style>body{font-family:宋体;font-size:16p
- 索引是以表列为基础的数据库对象。索引中保存着表中排序的索引列,并且纪录了索引列在数据库表中的物理存储位置,实现了表中数据的逻辑排序。通过索引
- 说明: a、以下字符中数据库名forum,数据库服务器名WWW-2443D34E558\SQL2005(或者127.0.0.1) b、查看s
- 一般情况下,访问或设置剪贴板,IE 只需使用 window.clipboardData 的 getData 或 setData 方法即可。M
- Microsoft JET Database Engine 错误 '80040e2
- 目前,很多互联网应用程序都提供了全文搜索功能,用户可以使用一个词或者词语片断作为查询项目来定位匹配的记录。在后台,这些程序使用在一个SELE
- 启用Ad Hoc Distributed Queries:exec sp_configure 'show advanced opti
- <!--#include file="Include/Conn.asp"--><%If(Request
- 在SQL Server数据库中,主要是通过角色来继承相关的权限。但是,这个权限继承很容易造成权限上的冲突。如现在有个销售员账户SALE1,有
- 今天一个同事报告一个问题,表都不能使用了,检查了一下,发现问题 db2 => select * from testACTNO ACTK
- 在安装SQL Server 2000 ,安装进程自动地为“BUILTIN\Administrators&rdqu
- 研究好多天了,也试过好多办法了,总结出目前发现最好的方法:先说一下基本的东西:<%@ codepage=65001%>
- ADODB.Stream在ASP编程中往往用于无组件上传,并且可以指定文件编码,可以应对各种不同的需要。但是在使用ADODB.Stream过