MERN 堆栈:投票系统 Web 应用程序中的问题

问题描述

我正在建立一个网站,人们可以在该网站上一次性为任何“一个”参与者投票。网站应该简单明了,这就是我尝试以这种方式设计的原因

enter image description here

如您所见,有一个投票按钮,任何用户都可以单击该按钮对任何特定参与者进行投票,而无需创建帐户或填写任何类型的凭据。但困难的部分是我必须确保一个用户不能多次投票,这就是我尝试过这些的原因:-

  1. 我正在保存用户的 IP,并在他们按下投票按钮时检查他们的 IP 是否存在于数据库
  2. 我正在阻止访问外国 IP,以便用户无法使用 VPN 进行投票
  3. 我正在用户浏览器中发送 Cookie,并在他们按下投票按钮时检查该 Cookie 是否存在

我已尽力增加安全性,但我遇到了一些问题,例如

  1. 即使我设置了过期时间,也不知道为什么 cookie 会在几个小时后自动用户浏览器中删除
res
  .status(201)
  .cookie("Voted",true,{
    maxAge: 1000 * 1000 * 60 * 60 * 24 * 4,})
  .send({ message: "Voted successfully!",success: true });
  1. 有时同一用户有超过 2 个 IP 地址
  2. 有些用户可以在不使用 VPN、克隆浏览器等的情况下多次投票

我不知道为什么会发生这些事情

对这些问题的任何回答都会对我有所帮助:)

  1. 你能建议我如何建立一个具有适当安全性的投票网站吗?
  2. 您知道为什么 cookie 会被自动删除吗?
  3. 如何确定是否是同一用户尝试按下投票按钮?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)