防止在Node/Express + Pusher JS投票应用程序上进行多次投票

gwo2fgha  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(190)

我正在创建一个简单的投票应用程序,客户端可以从HTML选择下拉列表中选择一个选项,然后通过一个表单提交,它会触发一个POST请求,将选择保存在数据库中。然后在前端进行更新。
目前还没有实现身份验证,但如果需要的话,我可能会继续这样做。
我主要担心的是有人投票的次数太多了,而且只能投票一次的公平性。
现在,我刚刚添加了本地存储时,客户端投票,所以当应用程序重新呈现选择被禁用,显然这不是一个坚实的解决方案,因为他们可以清除这个/使用另一个设备。
我从来没有建立过一个投票应用程序之前,所以我没有在这种情况下的经验,我很好奇什么是最好的解决方案是这样的事情。这不是一个严重的应用程序,但我想解决这个问题,如果可能的话,比使用本地存储更好的方式。
POST请求

router.post('/allTime', async (req, res) => {
    try {
        const guest = await req.body.guest;
        
        if(guest) {
            const guestFormatted = guest.toLowerCase();
            const guestPoll = await new GuestPoll({
                guest: guestFormatted,
                points: 1
            }).save();

            pusher.trigger("poll", "poll-vote", {
                guest: guestPoll.guest,
                points: parseInt(guestPoll.points)
            });
        }
        
        return res.json({
            message: 'Vote submitted'
        })
    } catch(err) {
        return res.json({
            err
        });
    }
});
bzzcjhmw

bzzcjhmw1#

您唯一的限制投票的真实的选择仍然是通过IP/MAC地址和/或通过身份验证的帐户进行限制。

任何认真对待“一人一票”功能的人,都将进行用户身份验证。

请不要编辑我的答案并链接到不可避免地导致安全和漏洞利用问题的东西... MAC和IP地址很容易被欺骗,它们不是检索真正唯一设备ID的安全可靠的方法。
但是,如果每个安全/漏洞利用问题都与您的案例无关,请随意使用Follow this that Tyler2 Linked
如果您想向您的朋友学习有关用户真实性设备ID可靠性的课程,just Google 'spoofing mac address'

相关问题