首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >建立安全投票系统

建立安全投票系统
EN

Stack Overflow用户
提问于 2009-03-27 11:47:42
回答 6查看 2.2K关注 0票数 2

我目前负责建立一个轮询系统(使用PHP)。

为了让它尽可能的安全和客观,游客只能投票一次是很重要的。我正在考虑通过访问者的IP来验证投票结果(一个IP只能投一票),也许还会提交一个captcha测试,以确保一旦机器人通过了IP验证,就不会因为某种原因而进入投票。

  1. 就这样,独特的-IP验证和captcha。但这足够了吗?是否有可能单个用户可以使用代理或其他我不知道的方式更改他/她的IP,并使用唯一的IP进行多次投票?
  2. 有没有更好的方法来做到这一点?最好不用卡普茶。

提前谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-03-27 12:17:49

当用户是一个不需要登录的公共投票系统时,绝对没有办法确保用户投票一次。

出于几个原因,检查IP不是一个好主意。正如在其他答案中所描述的,很多网络都在一个ip之后,用户只需使用另一个具有不同ip的pc就可以再次投票。

OpenId

使用OpenId识别用户并检查他们是否已经投票。

注册用户

另外,如果用户没有openid帐户,您可以允许他们注册自己。

要实现安全的系统,会话欺骗和多个投票是很困难的阅读这篇文章

票数 5
EN

Stack Overflow用户

发布于 2009-03-27 12:08:32

您不能创建一个100%安全的投票系统。

  • 如果是基于注册/IP/ cookie,用户可以创建一个新用户/获得另一个PC/删除所有cookie。

但是,您可以使用自动预筛选器+管理员作为postfilter工作流进行尝试:

  • 防止使用cookie (或IP /浏览器属性/等)进行多次投票自动过滤。
  • 在管理视图上,管理员可以根据IP或子网地址手动解析和删除选票。这并不是一个完美的解决方案,但是通过一些好的查询(相同的票数,同时从同一个IP/子网中获得相同的选票),管理员可以很容易地删除可疑的投票。

这种解决方案的一个大缺点是需要管理员。但是-我想-没有完美的解决办法。

票数 3
EN

Stack Overflow用户

发布于 2009-03-27 12:17:42

除非您需要通过CA验证身份,否则您无法确定,每个人只投票一次。这当然是完全过火了,所以真正的问题是:如何使多票更加困难。

  • 带有验证代码的电子邮件。IMHO过火了,但要看你有多确定。
  • 使用会话检查谁投票。显然不是100%的安全,但将停止99%的ppl。
  • 用曲奇来检查谁投票。像上面一样,一些ppl会知道如何删除cookie。
  • 使用POST,忽略GET。
  • 使用以上2或3的组合。

如果要使用IP进行验证,不要只使用REMOTE_ADDR,与整个X-Forwarded-For.相结合这样,您就不会阻止人们通过同一个代理进行连接。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/689453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档