|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧投票|反复 办法二:使用Cookies对象
由于Cookies对象把变量的值保留在阅读器客户端,所以可以依据Cookies保留的IsVoted的值来判别用户是不是投过票。Cookies变量和Session变量一样是公有的,然而假如咱们界说了Cookies变量的保存刻日,则Cookies变量是私有的,但凡从统一台机械上登录的用户在划定的工夫刻日没有到达时,都没法投票,这在必定水平上也能避免重复投票。完成法式流程如图2:
依据实践情形公道地设置Cookies变量的保存刻日的长短,例如设定为10分钟,如许一台机械即便一连投票最多一天也只能投144张票。
此种办法的破绽:在Windows 9x情况下,只需把 Windows\Cookies目次下一切*.txt文件删除,又可反复投票。为了再进一步避免重复投票,上面给出办法三。
办法三:验证IP地址与登录工夫
此办法起首使用 Request.ServerVariables(REMOTE_ADDR)获得用户的IP地址。在Web Server端创立一个尺度的MDB类型的数据库,此数据库有一个表,该表只要两个字段:IP地址和登录工夫。之所以设置登录工夫这个字段,是思索到拨号上彀用户能够共用统一个IP地址,假如一个IP 地址只能投一次票,那末明显不公道。同时,咱们还采取办法二一样的思惟,必需每隔一个设定的工夫段,统一个IP地址才干再次投票。所以这类办法例如法1、办法二在避免重复投票方面要严厉很多。其完成的法式流程如图3:
办法四:小局限查询拜访
这类办法只合用于小局限查询拜访,思惟与办法三不异,只是把办法三中的 IP地址换成可以独一代表用户的字段,如先生证号、任务证号等。这时候创立的MDB数据库只包含两个字段:证件号码与IsVoted(个中IsVoted是逻辑型字段, TRUE暗示已投过票,FALSE暗示还未投票,在建库时一切纪录的IsVoted的值都设为 FALSE)。在投票之前,请求先输出准确的证件号码,然后再判别IsVoted的值。完成这类办法的法式流程如图4:
从办法一到办法四,平安性愈来愈高,避免反复一连投票功效愈来愈强,然而各类办法都有各自的局限性。在使用中,用户应依据实践情形选择适合的办法。假如小局限投票,办法四无疑是最好的;假如在Internet上投票,办法三是最好的。别的一点必需说起的是:固然Application有保留变量的功效,然而咱们没有效到。由于 Application变量是一个全局性变量,假如用Application把IsVoted设为TRUE,则任何用户都没法投票;假如用Application把IsVoted设为FALSE,则任何用户都可以投票,就没有任何提防功效了。
</p> 缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。 |
|