我正在构建一个带有向上投票选项的简单Web应用程序。我计划为最多投票的人提供现金奖励,所以我想要一个相对安全的系统。我有几个关于受孕的问题。我知道我的帖子与其他几个帖子类似,但似乎没有一个特定的平台让我放心。
我的网络应用程序正在使用javascript和firebase来加载所有正在投票的对象。我将强制用户登录并存储IP地址,用户ID等。
问题:
修改 对不起,但是我遗漏了一个关键事实,即我确实有一个更大的后端系统(WordPress)来处理身份验证。我正在开发的应用程序基本上独立于wordpress。我只是为了过滤目的而提取一些用户信息。我选择Firebase作为其实时功能的存储解决方案。
我希望通过几种方法来打击选民欺诈行为:
答案 0 :(得分:8)
当然可以在客户端安全地执行此操作。但是,正如其他人所指出的,它确实需要用户登录。如果您已经在使用Firebase,那么使用FirebaseAuthClient实际上很容易实现。
然后,您可以将此与Firebase security rules结合使用,以强制执行任何已登录的用户只能提升一次。请查看安全页面上的截屏视频,以获取示例!
您的安全规则可能如下所示:
{
"rules": {
"users:" {
"$userid": {
"voted_on": {
"$articleid": {
".write": "!data.exists()"
}
}
}
}
}
}
这确保您可以将任何给定值写入/ users / anant / voted_on / article1 一次。您可以添加.validate
规则以确保该值是布尔值(或其他内容)。
答案 1 :(得分:3)
这是你应该做的:
1)一旦用户投票,你应该对服务器进行ajax调用并更新数据库中的标志并使用javascript禁用投票。
2)如果用户刷新页面并尝试再次投票,服务器将知道已经进行了投票(因为它已保存在数据库中),因此投票系统将在页面上显示为禁用。
3)如果用户尝试通过修改页面源来使用chrome工具或firebug启用投票,则可以通过在userID上设置复合键并在“投票”中创建数据库结束时的检查。 “这将阻止重复投票的旗帜。
希望有所帮助......
答案 2 :(得分:1)
无法阻止重复投票,但强制用户注册(可能通过电子邮件确认)并进行身份验证(因此,在您的数据库中某处存储投票并进行检查)。其他技术存在缺陷:
但是,用户可以注册多个帐户,但无法阻止这种情况。
您可以做的是检测可以通过脚本生成的快速投票操作序列。
答案 3 :(得分:1)
利用OAuth身份验证,用户不太可能通过FB / Twitter / Google / OpenID找到登录方式。
投票仍然便宜且快捷,如果用户不想通过第三方服务登录,您可以提供电子邮件回复。
正如大家所指出的,你必须依靠自己的服务器。